2012-05-25 2 views
13

Ich habe eine UIViewparentView, die eine UITapGuestureRecognizer implementiert und tut etwas, wenn angezapft. parentView hat eine Unteransicht namens childView, die auch eine UITapGuestureRecognizer implementiert und etwas tut, wenn er angezapft wird.Deaktivieren Sie den Empfang von Berührungen von der übergeordneten Ansicht auf Unteransicht

Es ist eine Instanz, wenn ich die childViewsUITapGestureRecognizer während einer Animation für einen leichten Moment ausschalten müssen, und ich merkte, wenn er ausgeschaltet ist und ich tippen childView, der Hahn von parentView abgefangen wird. Außerdem habe ich eine Symbolleiste an den Anfang dieser Ansicht angehängt, an der keine Gestenerkennungsfunktion angehängt ist, und die Berührungen werden an parentView übergeben (die Schaltflächen werden kaum funktionieren). Ich frage mich, ist es möglich, dies zu deaktivieren, ohne einen Verweis auf die Eltern UITapGestureRecognizer?

Ich habe versucht, mit der exclusiveTouches Eigenschaft UIView auf ja eingestellt und es funktioniert nicht. Irgendwelche Vorschläge würden geschätzt werden.

Antwort

23

In der Geste Erkenner Eltern, implementieren die UIGestureRecognizerDelegate und implementieren Sie die folgende Methode:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[ClassThatYouWantTouchesBlocked class]]) 
    { 
     return NO; 
    } 
    else 
    { 
     return YES; 
    } 
} 

ClassThatYouWantTouchesBlocked Ersetzen Sie mit der Klasse, die Sie seine Berührungen ignoriert werden soll.

1

Was ist, wenn nie die des Tonstiche Geste KindView ausschalten? Wenn es animiert ist, kehren Sie von der Tippgeste-Methode des Kindes zurück, ohne etwas zu tun.

Wenn es eine Imageview als isAnimating Eigenschaft könnte in Gebrauch kommen.

+0

Darf ich wissen Warum unten abstimmen? –

+0

Gültige Antwort - Ich werde upvote. Leute, die ohne Erklärung ablehnen, sind eine Gefahr für stackoverflow.com. – Cthutu

+0

Schätzen Sie die Anstrengung Warif aber downvoted, weil es die Frage nicht beantwortet, es versucht, die Problemstellung zu ändern. Und @Cthutu, ich würde sagen, dass du für stackoverflow.com eher eine Schande bist, weil ich trotz Aufmunterung nicht erklärt habe. –

Verwandte Themen