2014-12-27 8 views
6

Ho aggiunto uno al mio principale Content View nel ViewController per ignorare la tastiera quando viene toccata la vista del contenuto.iOS: l'aggiunta di UITapGestureRecognizer alla vista contenitore intercetta il metodo didSelectItemAtIndexPath di UICollectionView

Il problema è che ho un UICollectionView nella vista del mio contenuto e l'impostazione dello UITapGestureRecognizer intercetta i tocchi del mio UICollectionView.

Come consentire il passaggio dei comandi del mio UICollectionView in modo che il metodo didSelectItemAtIndexPath si attivi di nuovo?

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

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

risposta

15

Il modo per risolvere questo problema è aggiungere .cancelsTouchesInView = false al numero UITapGestureRecognizer.

Questo consente di passare all'interno di altre visualizzazioni i tocchi, ad esempio un tocco UITableViewCell.

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

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

provare questo

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

e rimuovere la tapGesture.

+0

Ciò interrompe l'intercettazione di 'UICollectionView' ma non elimina la tastiera quando si tocca un punto qualsiasi dello schermo. –

Problemi correlati