2012-02-29 7 views
6

UIViewのコントローラを作成してもiPhoneアプリにキーボードが表示されない場合があります。 UITableViewは利用可能な画面の残りの部分を占めています。UITableFieldの外でUITableFieldの外をクリックしたときに最初のレスポンスを返す方法

UITableViewをクリックしてキーボードを別名firstResponderに退会させる方法が不思議でしたか?クリック可能なセルを選択しない場合でも、UITableViewのタッチイベントを監視する方法はありますか?

基本的には、セルがイベントを発生させるとキーボードを辞める方法を知っていますが、UITableViewのクリック不可能な部分をクリックするとキーボードが消えてしまいます。

答えて

6

2オプション:あなたのViewControllerで

  • 、テーブルのスクロールコールバックに対応し、
-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    [self.view endEditing:YES]; 
} 
  • レスポンダを辞任あなたはいつもUITapGestureRecognizerを追加することができますテーブル/ビューに移動し、レスポンダをtから辞めるここをクリック

個人的に私は通常、テーブルのスクロールで行います。私はキーボードを一度にタップするのが嫌いです。タップジェスチャー認識の追加

+0

UITapGestureRecognizerは、私が必要としていたことを正確に行いました。私は時間を感謝します。私はスクロールも同様に動作すると確信しています、私はちょうどこの場合にタップが必要ですが、後で私の在庫のスクロールを保持します。 – Rob

3
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    UITapGestureRecognizer *doubleTap = 
      [[UITapGestureRecognizer alloc] 
      initWithTarget:self 
      action:@selector(tapDetected:)]; 
      doubleTap.numberOfTapsRequired = 1; 
      [self.tableView addGestureRecognizer:doubleTap]; 
      [doubleTap release]; 

    } 

- (IBAction)tapDetected:(UIGestureRecognizer *)sender 
{ 
    CGPoint p = [sender locationInView:self.tableView]; 

    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p]; 

    if(indexPath == nil) 
    { 
    NSLog(@"empty"); 
    } 
    else 
    { 
    [textField resignFirstResponder]; 
    } 
} 

私はそれを試してみてください...助けになると思う。..

+1

私は、タップのジェスチャーがイベントを食べていたので、セルがセルを提出しないように、それはセルがtableviewにタップステッしかし、ありがとう、私はおそらく別の状況でこのコードが必要になります。 – Rob

0
@property (weak, nonatomic) UITextField *activeTextField; // keeps track of whose keyboard is being displayed. 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    self.activeTextField = textField; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // if (indexPath equal to something then) 
    [self.activeTextField resignFirstResponder]; 
} 
3

は興味深いソリューションですが、そこの代替だと、あなたは何をコーディングする必要はありません!

Interface Builderで、テーブルビューのプロパティ「」keyboardDismissModeを「ドラッグで終了」に設定できます。これはUIScrollViewから継承されたプロパティで、テーブルビューをスクロールするたびにキーボードは閉じられます。

関連する問題