2010-03-19 14 views
7

Tytuł mniej więcej mówi wszystko. W odpowiedzi na zdarzenie touchesBegan mój UIViewController zachowuje kolorystykę i dodaje kilka subskrybentów.Brak odbioru dotknięć Wylczony/przeniesiony/Anulowany po dodaniu subView

Nigdy nie otrzymuje touchesEnded. Chyba dlatego, że dodane subviews w jakiś sposób przechwytują wydarzenie. Próbowałem wywoływać resignFirstResponder na subviewsach bez rezultatu.

Kod działa poprawnie, gdy nie dodaje się widoków podrzędnych, a zdarzenia dotyku są wywoływane jako normalne.

Wszelkie pomysły?

Dzięki

EDIT: Bit szczegółowości i jak naprawiłem go.

Zasadniczo miałem widok główny z niektórymi subviewsami, kiedy dotknąłem widoku, wydarzenie zostanie przekazane do widoku głównego, jednak w tym wydarzeniu usunąłem subviews i dodałem nowe w ich miejscu. Fakt, że dotyk powstał na wyglądzie, który już nie istniał, oznaczał utratę reszty dotyku.

Naprawiłem to nadrzędnymi hitTest: withEvent moim zdaniem mistrza, aby zatrzymać dotyka coraz coraz przetestowane przed subviews

+2

Dowolny kod? +++++ – kennytm

+0

Hmmm, cóż, kod jest dość skomplikowany, ale zakodowałem najprostszy możliwy przykład, aby opublikować go tutaj i działało OK ... więc +1 dla kuksańca w dobrym kierunku ...... ........ opublikuje, gdy wykryję różnicę – Sam

Odpowiedz

8

Próbowałeś ustawić właściwość userInteractionEnabled na nIE dla podrzędny przed dodaniem go jako podrzędny?

+0

nie, to brzmi obiecująco, spróbuje ... – Sam

+0

Może niektóre wywiady pochłonęły to wydarzenie, wprowadzając źle sformułowane -touchesEnded: withEvent? – ZhangChn

1

masz zamiar trzeba zdać dotyk z podrzędny na SuperView używając coś takiego:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    [super touchesBegan:touches withEvent:event]; 
} 
+0

, subviews również nie otrzyma zdarzenia. Jeśli dodaję podgląd do miejsca, w którym nastąpiło zdarzenie touchesBegan, ani subview, ani superview nie otrzymują touchSoved/Cancelled/Ended – Sam

+3

To przekazuje dotyk superCLASS, a nie superVIEW. ;) – Pascal

Powiązane problemy