2017-03-23 7 views
1

Ich habe UITableView oben auf UIView hinzugefügt. Hinzugefügt Tippgeste auf UIView unten Code:didSelectRowAt wird nicht aufgerufen

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapToClose)) 
    tapGesture.cancelsTouchesInView = false 
    tapGesture.numberOfTapsRequired = 1 
    vwForTouchClose.addGestureRecognizer(tapGesture) 

, wenn ich auf Zelle didSelectRowAt wähle nicht statt Gesten Methode aufgerufen zu werden aufgerufen. Im Folgenden finden Sie ur-Code bei didSelectRowAt:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 

} 

Bitte helfen Sie mir, dieses Problem zu lösen.

+0

Können Sie die richtige Ansicht Hierarchie in Ihrem Code hinzufügen und in welcher Ansicht Sie hinzufügen tapGesture –

+0

UIView -> UITableView – user2931321

+0

Überprüfen Sie, ob Delegierte von 'UITableView' gesetzt ist oder nicht auch hinzufügen Code Ihrer 'didSelectRow'-Methode, die Sie gerade hinzugefügt haben. –

Antwort

2

Sie müssen die Berührungen des UIGestureRecognizer auf TableView abbrechen. Verwenden Sie Delegatmethode von Gestenerkenner:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isDescendantOfView:yourTableView]) { 

     return NO; 
    } 

    return YES; 
} 
+0

@thewarrior Danke !! Das hat mein Problem gelöst. tapGesture.delegate = self und UIGestureRecognizerDelegate-Protokoll hinzugefügt. – user2931321

+0

Willkommen Kumpel :) –