我在这个项目中使用了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];
}
答案 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;
}