UITextField可以发送两次动作。这是iOS错误,还是我犯了错误?

时间:2014-07-30 05:53:00

标签: ios xcode uinavigationcontroller uitextfield

在iOS中,我在UITextField场景中有UITableViewController由导航控制器管理。所有静态细胞。文本字段已打开“清除编辑”标志。我想获取并保存在字段中输入的值,因此我在自定义-editingDidEnd:子类中使用saveData:操作调用我的UITableViewController方法。如果我单击文本字段,一切都很好。但是,如果我使用后退导航按钮退出场景,则会saveData:被调用两次。一次输入值,第二次输入空值。这似乎是不正确的行为。

我制作了一个演示项目并将其发布到GitHub:https://github.com/davehirsch/BugDemo

我做错了吗?这是iOS错误吗?它似乎不太可能是其他人没有发现的错误(我已经四处寻找报道类似事情的其他人)。我正在运行Xcode和OS X的最新非beta版本,并且这个错误发生在iOS模拟器中(但我不确定它是否会在真实设备上发生,我猜)。

1 个答案:

答案 0 :(得分:0)

是的,你是对的。它看起来像UINavigationController中的错误。

在动画之前和之后,在动画之前和之后调用方法[UITextField resignFirstResponder]。第一个调用由[UINavigationController popViewControllerAnimated:]完成,第二个调用在[UINavigationConteoller navigationTransitionView:didEndTransition:fromView:toView:]中调用[UIView(Hierarchy) _removeFirstResponderFromSubtree]

在动画结束之前,您的文字字段尚未作为第一响应者辞职。

[编辑]

我建议看一下rdelmar评论。