zdarzenia dotykowe propagacji tak:
- UIViews wysyłane -hitTest: withEvent: rekurencyjnie aż niektóre UIView zdecyduje, że dotyk jest wewnątrz jej granic a nie wewnątrz podglądu z włączoną obsługą użytkownika.
- UIWindow wysyła -touchesBegan: withEvent: i znajomych do UIView zwróconych w kroku 1, ignorując wszelkie hierarchie widoków.
Innymi słowy, -hitTest: withEvent: służy do określenia widoku docelową w dotyku, po którym widok docelowy pobiera wszystkie -touches ...: withEvent: wiadomości. Jeśli chcesz przechwycić gest przesunięcia, który może się rozpocząć w Uibuttonie, musisz zastąpić -hitTest: withEvent:, aby zwrócić self.
Istnieje jednak problem z tym podejściem. Gdy to zrobisz, przycisk przestanie działać, ponieważ nie dostanie żadnych komunikatów -touches ...: withEvent:. Będziesz musiał ręcznie przesuwać elementy do podstron, chyba że wykryjesz gest machnięcia. To jest poważny ból w tyłku i nie ma gwarancji, że zadziała w ogóle. Do tego służą UIGestureRecognizers.
Innym podejściem jest podklasa UIWindow i przesłanianie -sendEvent:, która może działać lepiej w twoim przypadku.
W każdym razie upewnij się, że dokładnie przeczytałeś dokumentację Event Handling. Wśród innych przerażających ostrzeżeń mówi:
Klasy ramach UIKit są nie przeznaczona do odbioru detali które nie są zobowiązane do nich; w terminach programowych oznacza to, że właściwość widoku obiektu UITouch musi zawierać odwołanie do obiektu ramowego , aby dotknięcie było obsługiwane za pomocą dotyku .
ten link się teraz zmienił .. update plz :) –
WIELKA ODPOWIEDŹ ..... DZIĘKI ...... –