2017-03-23 23 views
1

UIViewの上にUITableViewを追加しました。私は、セルに選択したときにdidSelectRowAtが呼び出されない

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

ジェスチャーメソッドが呼び出される代わりに呼び出さ届かないdidSelectRowAt:コードの下に使用してのUIViewにタップジェスチャーを追加しました。以下 はdidSelectRowAtでウルのコードです:

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

} 

この問題を解決するために私を助けてください。

+0

あなたのコードでとした適切なビュー階層を追加することができますが、あなたを表示するUIView tapGesture –

+0

追加する - >のUITableView – user2931321

+0

は 'UITableView'も追加設定またはされていないのデリゲートをチェックあなたが現在追加した 'didSelectRow'メソッドのコードです。 –

答えて

2

TableViewでUIGestureRecognizerのタッチをキャンセルする必要があります。ジェスチャ認識装置のデリゲートメソッドを使用します。

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

     return NO; 
    } 

    return YES; 
} 
+0

@thewarriorありがとうございました!これは私の問題を解決しました。 tapGesture.delegate = selfとUIGestureRecognizerDelegateプロトコルが追加されました。 – user2931321

+0

ようこそメイト:) –

関連する問題