UITextField编辑开始呼吁查看结束编辑

问题描述:

这一切都适用于我的版本,这是在应用程序商店。但是,如果我恢复我的Git,它不再有效。这可能是因为我更新Xcode(现在6.3),但不确定。问题是:UITextField编辑开始呼吁查看结束编辑

当我调用UITextField'Editing Did Begin'处理程序时,显示UIAlert。 警报提醒用户“您确定要编辑这个?”

如果用户单击‘取消’然后我打电话

[self.view endEditing:YES]; 

以前在我的应用程序这不得不离开的UITextField的影响并关闭对话框。

现在后UIAlert是隐藏的,焦点就回的UITextField导致被创建并再次显示UIAlert。

的问题是,如何从的UITextField?和WH移除焦点你以前是否曾经工作过,但没有更多?

也试过[发件人resignFirstResponder],但这也没有办法。响应

位更多信息评论:这里是“真的结束编辑”处理程序代码

- (IBAction)textFieldReturned:(id)sender 
{ 
[sender resignFirstResponder]; 
} 
+0

显示更多你调用'endEditing:'的代码。你使用'UIAlertView'还是'UIAlertController'? – rmaddy

+0

使用UIAlertView –

+0

再次,你从哪里调用'endEditing:'?换句话说,哪个'UIAlertViewDelegate'方法? – rmaddy

这个问题似乎试图从该alertView:clickedButtonAtIndex:方法辞职的文本字段干。这太快了。

我建议您改为实施alertView:didDismissWithButtonIndex:委托方法。这样,当您退出文本字段时,警报已被解除。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == alertView.cancelButtonIndex) { 
     [self.view endEditing:YES]; 
    } else { 
     // handle other buttons 
    } 
} 
+0

感谢rmaddy,看起来像我使用错误的UIAlertView API调用。其中工作正常,直到我猜应用程序代码和/或iOS的变化推动了它的边缘。接得好。 –

+0

我认为在新的iOS版本中会发生什么情况是警报会检测到第一个响应者在显示时的内容。当它被解雇时它重置第一响应者。这就是为什么在使用前面的委托方法时,你的文本字段被作为第一个响应者放回去的原因。 – rmaddy