2014-12-27 4 views
6

Ich habe eine UITapGestureRecognizer zu meinem Haupt Content View in meinem ViewController hinzugefügt, um meine Tastatur zu schließen, wenn die Inhaltsansicht angetippt wird.iOS: Hinzufügen von UITapGestureRecognizer zur Containeransicht fängt UICollectionView-Methode didSelectItemAtIndexPath auf

Das Problem ist, dass ich eine UICollectionView in meiner Inhaltsansicht habe, und das Setzen der UITapGestureRecognizer fängt die Taps meiner UICollectionView ab.

Wie kann ich zulassen, dass meine UICollectionView Taps durchgehen, so dass die didSelectItemAtIndexPath Methode erneut ausgelöst wird?

func setupGestureRecognizer() { 
    let dismissKeyboardTap = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
    contentView.addGestureRecognizer(dismissKeyboardTap) 
} 

func dismissKeyboard() { 
    contentView.endEditing(true) 
} 

Antwort

15

Die Art und Weise, dieses Problem zu lösen, ist durch .cancelsTouchesInView = false zu Ihrem UITapGestureRecognizer hinzufügen.

Damit können Berührungen in anderen Ansichten durchgehen, z. B. UITableViewCell.

func setupGestureRecognizer() { 
    let dismissKeyboardTap = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
    dismissKeyboardTap.cancelsTouchesInView = false 
    contentView.addGestureRecognizer(dismissKeyboardTap) 
} 

func dismissKeyboard() { 
    contentView.endEditing(true) 
} 
0

versuchen, diese

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.view endEditing:YES]; 
} 

und Ihre tapGesture entfernen.

+0

Damit wird das Abfangen der 'UICollectionView' gestoppt, die Tastatur wird jedoch nicht verlassen, wenn Sie auf eine beliebige Stelle auf dem Bildschirm tippen. –