当键盘被解除时,UITextField会触发不需要的segue

时间:2013-08-14 20:28:42

标签: ios keyboard storyboard uitextfield segue

我在这个项目中使用了Storyboard,并在视图中有一个UITextField。用户可以输入搜索词,按回车键,并按预期发生到resultViewController的segue。

我遇到的问题是,如果由于任何原因键盘被解除,segue会自动发生。例如,如果用户点击iPad的下拉键盘键,则segue在没有搜索词的情况下发生...或者如果用户点击UITextField之外,键盘会下降(按预期),但也会发生segue(非预期)。

以下是我正在使用的方法(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];

}

2 个答案:

答案 0 :(得分:5)

嗯,我觉得很傻,但我会回答我的问题以防其他人有这个问题。

为了控制segue应该或不应该发生的时间,我需要实现以下方法:

-(BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([self.searchField.text isEqualToString:@""]) {
    return NO;
    }
return YES;
}

答案 1 :(得分:0)

您是否尝试过设置此方法以始终返回no?您可能需要检查是否要搜索。 (就像你上面的方法一样)

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

[self.view resignFirstResponder];
return YES;

}