我有iphone应用程序,我在textFieldShouldReturn
和didEndEditing
上调用其他代码。
我希望当用户返回时,应用程序不应该调用didEndEditing
代码,如果用户没有按返回,则调用。
-(void)textFieldDidEndEditing:(UITextField *)textField
{
if (textField==tagTextField) {
[self showAnimationBack];
}
if (textField.tag==2 && [valueReturn isEqualToString:@"Yes"]) {
if (textField.text.length > 0 || ![tagTextField.text isEqualToString:@""]) {
[textField resignFirstResponder];
[tagArray addObject:tagInputField.text];
[tableView reloadData];
tableView.frame = CGRectMake(tableView.frame.origin.x, tableView.frame.origin.y, tableView.frame.size.width, tableView.contentSize.height);
[tableView.layer setCornerRadius:7.0f];
[tableView.layer setMasksToBounds:YES];
tableView.layer.borderWidth = 0.5;
tableView.layer.borderColor = [UIColor grayColor].CGColor;
[self showAnimationBack];
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if(textField.tag == 2)
{
if (textField.text.length > 0 || ![tagTextField.text isEqualToString:@""]) {
[textField resignFirstResponder];
[tagArray addObject:tagInputField.text];
[tableView reloadData];
tableView.frame = CGRectMake(tableView.frame.origin.x, tableView.frame.origin.y, tableView.frame.size.width, tableView.contentSize.height);
[tableView.layer setCornerRadius:7.0f];
[tableView.layer setMasksToBounds:YES];
tableView.layer.borderWidth = 0.5;
tableView.layer.borderColor = [UIColor grayColor].CGColor;
[self showAnimationBack];
}
}
当用户按回车
时,我也会这样说- (void)keyboardDidHide:(NSNotification *)aNotification {
valueReturn=@"Yes";
}
答案 0 :(得分:0)
使用isEditing
值,因为您(可能)在按下返回键时从第一响应者处退出文本视图,textFieldDidEndEditing
文本字段应在非编辑模式下发生。< / p>
答案 1 :(得分:0)
我不确定这是否是一种正确的方法,但你可以试试这个。声明变量isReturnPressed
并在YES
中将其设为textFieldShouldReturn:
,并在NO
中将其设为textFieldDidEndEditing:
。所以你可以检查条件如下..
-(void)textFieldDidEndEditing:(UITextField *)textField
{
if (isReturnedPressed == NO) {
// Do your stuff
}
else {
isReturnedPressed = NO
}
}
希望这有帮助。