1

UITableView に UITextField があり、数字キーボードを使用していますが、ユーザーが UiTextField 以外をクリックするとキーボードが消えてしまいます。

いくつかの解決策を見てきましたが、決定的な答えは 1 つではないようです。たとえば、ジェスチャについて話している人もいますが、それらを実装すると、以下のコードを使用しても機能しないようです。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [[self view] endEditing:TRUE];

}

ご覧のとおり、私は試していますが、機能しているように見える方法は1つもありません。誰かが私を案内してもらえますか?

ありがとう

4

3 に答える 3

3

代わりにresignFirstResponderを使用する必要があります:

[textField resignFirstResponder];
于 2012-09-01T20:54:36.980 に答える
3

通常、キーボードを閉じてはならない領域に対してタッチをヒットテストする必要があります。ただし、一般的には、現在フォーカスされているコントロールに「firstResponder」としてのステータスを「辞任」するように指示する必要があります。次のようになります。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 [self.userInput resignFirstResponder];
}

ただし、長期的にはタッチのNSSetを過度に分析する必要がないように、このための特別なジェスチャレコグナイザーを検討することもできます(実際の「却下の嘆願」の違いを判断するタスクをGestureRecognizerに委任します!」をタップして「これをスクロールできますか?」をスワイプします。

于 2012-09-01T20:55:37.993 に答える
2

次のコードを使用します

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [[event allTouches] anyObject];
  // Note the '!':
  if(![[touch view] class] isKindOfClass [UITableViewController class]]){
    // It's not a bubble they touched, dismiss the keyboard:
    [self.view endEditing:YES];
  }
  [super touchesBegan:touches withEvent:event];
}

またはその他

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [[event allTouches] anyObject];
  // Note the '!':
  if(![[touch view] class] isKindOfClass [UITableViewController class]]){
    // It's not a bubble they touched, dismiss the keyboard:
    [textField resignFirstResponder];

  }
  [super touchesBegan:touches withEvent:event];
}

これはあなたがやりたいことをするのに役立ちます

于 2012-09-01T20:56:56.637 に答える