在iOS中,我在UITextField
场景中有UITableViewController
由导航控制器管理。所有静态细胞。文本字段已打开“清除编辑”标志。我想获取并保存在字段中输入的值,因此我在自定义-editingDidEnd:
子类中使用saveData:
操作调用我的UITableViewController
方法。如果我单击文本字段,一切都很好。但是,如果我使用后退导航按钮退出场景,则会saveData:
被调用两次。一次输入值,第二次输入空值。这似乎是不正确的行为。
我制作了一个演示项目并将其发布到GitHub:https://github.com/davehirsch/BugDemo
我做错了吗?这是iOS错误吗?它似乎不太可能是其他人没有发现的错误(我已经四处寻找报道类似事情的其他人)。我正在运行Xcode和OS X的最新非beta版本,并且这个错误发生在iOS模拟器中(但我不确定它是否会在真实设备上发生,我猜)。
答案 0 :(得分:0)
是的,你是对的。它看起来像UINavigationController
中的错误。
在动画之前和之后,在动画之前和之后调用方法[UITextField resignFirstResponder]
。第一个调用由[UINavigationController popViewControllerAnimated:]
完成,第二个调用在[UINavigationConteoller navigationTransitionView:didEndTransition:fromView:toView:]
中调用[UIView(Hierarchy) _removeFirstResponderFromSubtree]
。
在动画结束之前,您的文字字段尚未作为第一响应者辞职。
我建议看一下rdelmar评论。