2012-05-11 2 views
1

新しいビューコントローラに続くUILabelUITapGestureRecognizerのカスタムUITableViewCellがあります。タップジェスチャーが発生すると、セグは機能しますが、tapGestureがどのセルで実行されているかにかかわらず、最初のセルからのデータは常に通過します。ただし、最初にラベルtapGestureRecognizerの外にあるセルを選択し、 、データは正常にb/c私は最初にそれぞれのセルを選択通過します。UITavleViewCellラベルのタップジェスチャは認識されますが、セルも選択されません

セル選択を認識するためにtapGestureを設定するにはどうすればよいですか?

P.S.私はストーリーボードでジェスチャーとセグを設定します。コードではありません。また、私のデータ渡しコードは私のprepareForSegueメソッドです。

+1

なぜあなたはUITapGestureRecognierを使用していますか? UITableViewがその作業を行い、選択を処理して詳細ビューにプッシュするのはなぜですか? –

+0

私は、各セルに2つのラベルを持っています。ジェスチャーは、2つの異なるビューコントローラーにそのセグを認識させます。 – mnort9

+0

私は確かにそれがどのようにレイアウトされているかわからないが、私は悪い考えであり、非常にユーザーフレンドリーではないという気持ちがある。あなたの問題を解決するために、私はあなたのtapGestureセレクターのコードを参照する必要があります。 –

答えて

4

あなたは疑問に思っていますが、細かいことは少しはわかりますが、タップが発生したときにどのセルが選択されたのかをコードで判断していますか?

ie。タップが発生したときに発生するメソッドでは、タップが発生したセルをtableviewに問い合わせて確認し、そこからprepareForSegueメソッドで渡す必要のあるコードを判断できます。

たとえば、次の方法を使用して、タップされたセルを特定し、そのセルのテキストフィールド用にキーボードを表示します。これを簡単に適用して、どのセルがタップされたかを記憶しておき、それをprepareForSegueで使用して正しいデータを送信することができます。

これがあなたが探しているものです。あなたの質問からかなり言えません!

- (void) tapDetected:(UIGestureRecognizer*)sender 
{ 
    // get location of tap 
    CGPoint tapLocation = [sender locationInView:self.tableView]; 

    // Query tableview and get location of cell 
    NSIndexPath *idp = [self.tableView indexPathForRowAtPoint:tapLocation]; 

    // Now get the actual cell 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:idp]; 

    // Get handle on text field 
    UITextField *textField = (UITextField *)[cell viewWithTag:1]; 

    // Bring up keyboard for that textfield. 
    [textField becomeFirstResponder]; 


} 
関連する問題