2016-08-04 34 views
0

Ich verwende eine UIView mit einem UITapGestureRecognizer. Auf der anderen Seite ich einen Hahn Erkenner auf Viewcontroller Behälter Ansicht haben,UITapGestureRecognizer funktioniert nicht auf den oberen Punkten auf UIView

Jetzt, als ich auf meine innere Ansicht tippen, ruft Handler,

aber wenn ich tippen Sie auf beispielsweise 40 obere Punkte davon es, funktioniert nicht, und container's tap recognizer feuert !!!, eigentlich bin ich mir sicher, dass es in der UIView ist, ich bin mir sicher, dass ich den Hintergrund in eine andere Farbe geändert habe, und andererseits gibt es keine anderen Ansichten Auch auf diese Sicht!

Es ist wirklich nervig, ich habe alles getestet, alle Ansichten versteckt, andere Recognizer und so weiter deaktiviert! Und es ist nicht das erste Mal dieses U I TAP Recognizer mit: ///

view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewController.dismissKeyboard(_:)))) 
    viewWrite.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewController.viewPressed(_:)))) 

EDIT ::

ich, dass auch gefunden, wenn ich berühre hier auf meiner UITextView, die Antippereignis Hauptcontainerladungen !! aber andere Standpunkte, nein! ::

HERE!!

+0

UND SELBST, wenn ich irgendwo auf meinem UITextView klicke 'Tastatur abweisen' wird aufgerufen !!! –

+0

Bitte posten Sie ein Bild, das die Stufenposition und Ansicht darstellt. – Fujia

+0

Bild beigefügt @Fujia –

Antwort

0

können Sie versuchen, UIGestureRecognizerDelegate

zB Implementierung.

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if (gestureRecognizer == recoginiser1 && wrongview1) return false 
    if (gestureRecognizer == recoginiser2 && wrongview2) return false 
    else return true; 
} 

Falsche Ansicht bedeutet so etwas.

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if (gestureRecognizer == recognizer1){ 
    let point = touch.locationInView(self.view) 
     if CGRectContainsPoint(textView.frame, point) == true { 
      return false 
     } 
    } 
    return true 
} 
+0

was meinst du 'falseview1'? –

+0

Alle Ansichten/Ansichten sind nicht erforderlich, um eine Berührung zu erhalten. (z. B. das UITextView, das Sie oben erwähnt haben). z.B. recogniser1 sollte keine Berührungen erhalten, wenn der Berührungspunkt in TextView ist (Sie können den Berührungspunkt und die Ansicht mit dem UITouch-Wert erhalten) ... CGPoint point = [touch locationInView: view]; if (CGRectContainsPoint (textView.frame, point)) – RJE

+0

Ich weiß, und ich habe das getestet, funktioniert nicht, Ich meine, bitte füge Definition Definition von falseView1 zu Ihrer Antwort hinzu. –