Problemy z rozpoznawaniem gestów w systemie iOS 7

Dodam kilkaUIView obiekty (np. 5) na ekranie, jeden wewnątrz drugiego. Na przykładview5.superview = view4, view4.superview = view3, view3.superview=view2, view2.superview = view1. Dla wszystkich tychUIView Ustawiam uitapgesturerecognizer; dla view1-4 Po prostu robię NSLog (@ "stuknij% @", self) w wywołaniu zwrotnym, podczas gdy dla view5 stuknij Ustawiam: usuń widok4 z hierarchii, a następnie umieść ten sam widok obiektu4 'w tym samym miejscu hierarchii . Ten obiekt zawiera także widok 5 ', dla któregoUITapGestureRecognizer jest ustawione (praktycznie zastępuję jedną część znaczników podobną).

Następnie zaczynam klikać na widok5. Jakiś widok czasu5 wciąż łapie kran i wszystko jest w porządku, ale losowa liczba puknięć później (za każdym razem, gdy ta liczba jest inna) jeden z obiektów widoku 1-4 zaczyna łapać ten kran, chociaż nadal klikamy widok5. Cały problem ma charakter losowy - czasami pojawia się przy 10. uruchomieniu, czasami przy drugim. Czasami błędne obiekty zaczynają łapać stuknięcia przy pierwszym stuknięciu. Nigdy też nie wiem, jaki obiekt złapie kran, gdy wszystko pójdzie źle. Ramka widoku (n + 1) została ustawiona, na przykład, jako połowa widoku ramki (n), podczas gdy ramka dla widoku 1 - np. (0,0 320, 460).

Wszystkie operacje z obiektami ui opisanymi powyżej są przeprowadzane w głównym wątku, a wszystko, o czym mówiłem, doskonale działało na iOS 4.3 - 6.1 ze znacznie bardziej złożonymi przykładami. Ale iOS7 robi z tego jakieś przypadkowe piekło.

Aktualizacja: Stworzyłem przykładowy projekt, aby uprościć proces debugowania. Nie dodawaj / usuwaj operacji podglądu pod dotknięciem. Tylko 4 widoki na ekranie, po dotknięciu logi aplikacji, który widok został dotknięty. Musisz więc dotknąć najmniejszego widoku (4). Jeśli widzisz „dotknij 4 dotknij 4 dotknij 4…” w dzienniku - tak jest, gdy wszystko działa dobrze, zatrzymaj się i uruchom ponownie, zatrzymaj się i uruchom ponownie, zatrzymaj się i uruchom ponownie itd. A przy niektórych biegach (może po 10 + pomyślne uruchomienie) nie zobaczysz „stuknij 4” w pierwszym wierszu, zobaczysz „stuknij 1” lub „stuknij 2” lub „stuknij 3”, a będzie to kontynuowane - to są złe przypadki.

Przykładowy projekt można pobrać stąd:http://tech.octopod.com/test/BuggySample.zip (tylko 33 Kb w archiwum).

Aktualizacja 2

Opublikowaliśmy błąd w Apple, opublikuję tutaj, gdy otrzymamy informację zwrotną. Jednak wszelkie dobre obejście byłoby bardzo mile widziane!

Aktualizacja 3

Rozwiązanie dostarczone przez Yuvrajsinh naprawdę działa na przykładowym projekcie. Niestety nadal nie pomaga rozwiązać problemu, który wystąpił w głównym projekcie, w którym początkowo się pojawił. Głównym powodem jest to, że jeśli jakikolwiek widok bez gestu samego siebie opiera się na treści klikalnej, losowy element widoku pod nim zaczyna łapać interakcję (zamiast górnego z zestawem gestów interakcji. Czy masz jakieś pomysły, jak można to rozwiązać ? Zaktualizowaną próbkę można pobrać stąd:http://tech.octopod.com/test/BuggySample2.zip

questionAnswers(4)

yourAnswerToTheQuestion