我正在处理通知,我对此的理解是,只有当您点击文本字段时,才会发布诸如“textFieldShouldBeginEditing:(UITextField *)iTextField”之类的 IOS 通知。
令我奇怪的是,当我点击“返回”按钮返回之前的视图时,我的代码正在收到此通知。
我再次收到此通知的可能性有多大。我相信我们不需要注册此类通知。我只注册了键盘隐藏/显示通知。
请建议。
我正在处理通知,我对此的理解是,只有当您点击文本字段时,才会发布诸如“textFieldShouldBeginEditing:(UITextField *)iTextField”之类的 IOS 通知。
令我奇怪的是,当我点击“返回”按钮返回之前的视图时,我的代码正在收到此通知。
我再次收到此通知的可能性有多大。我相信我们不需要注册此类通知。我只注册了键盘隐藏/显示通知。
请建议。
编辑:我误解了这个问题。请参阅 OP 的答案。
好吧,键盘将在导航时消失。在这种情况下发布通知是有道理的。忽略响应视图转换而生成的通知的一种方法是跟踪视图控制器的状态。
- (void)viewWillDisappear:(BOOL)animated {
_transitioningView = YES;
}
- (void)viewDidDisappear:(BOOL)animated {
_transitioningView = NO;
}
- (void)viewWillAppear:(BOOL)animated {
_transitioningView = YES;
}
- (void)viewDidAppear:(BOOL)animated {
_transitioningView = NO;
}
现在,在键盘通知调用的选择器中,如果视图正在转换,则可以返回。
- (void)keyboardWillHide:(NSNotification*)notif {
if (_transitioningView)
return;
// Handle keyboard dismissal.
}
我发现了这个问题。问题是我在服务器调用之前将我的文本字段添加为第一响应者,然后仅在您点击返回按钮或点击任何其他文本字段时才将其删除。这就是为什么按下后退按钮时它没有辞职的原因。现在我在服务器调用后不久就辞职了。