4

このプロジェクトで Storyboard を使用しており、ビュー内に UITextField があります。ユーザーは検索語を入力して Return キーを押すと、意図したとおりに resultsViewController へのセグエが発生します。

私が抱えている問題は、何らかの理由でキーボードが閉じられた場合、セグエが自動的に発生することです。たとえば、ユーザーが iPad のドロップ キーボード キーをタップすると、検索語なしでセグエが発生します... または、ユーザーが UITextField の外側をタップすると、キーボードは (意図したとおりに) ドロップしますが、セグエも発生します (意図しない)。

私が使用しているメソッドは次のとおりです (UITextField のデリゲートはストーリーボードに設定されています)。また、解決策を見つけようとしていたので、いくつかの場所に「resignFirstResponder」および「endEditing: YES」メッセージを入れました。混乱してすみません:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

  if ([textField.text isEqualToString:@""]) {
    [textField resignFirstResponder];
    return NO;
  }

  self.clueString = textField.text;
  [textField resignFirstResponder];
  return YES;

}

- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {

  [self.view resignFirstResponder];
  return YES;

}

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

 [self.view endEditing:YES];

}
4

2 に答える 2

5

ばかげていると思いますが、他の誰かがこの問題を抱えている場合に備えて、質問に答えます。

セグエが発生するタイミングと発生しないタイミングを制御するには、次のメソッドを実装する必要がありました。

-(BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([self.searchField.text isEqualToString:@""]) {
    return NO;
    }
return YES;
}
于 2013-08-14T21:56:25.517 に答える
0

このメソッドを常に no を返すように設定しようとしましたか? 検索するかどうかをチェックする必要があるかもしれません。(上記の方法のように)

- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {

[self.view resignFirstResponder];
return YES;

}
于 2013-08-14T20:33:05.163 に答える