【问题标题】:IOS Notification issueIOS 通知问题
【发布时间】:2010-11-03 20:26:13
【问题描述】:

我正在处理通知,我对此的理解是,只有在您点击文本字段时才会发布诸如“textFieldShouldBeginEditing:(UITextField *)iTextField”之类的 IOS 通知。

奇怪的是,当我点击“返回”按钮返回之前的视图时,我的代码会收到此通知。

我再次收到此通知的可能性有多大。我相信我们不需要注册此类通知。我只注册了键盘隐藏/显示通知。

请提出建议。

【问题讨论】:

  • 请考虑使用更具描述性的问题标题。

标签: ios uitextfield uikeyboard


【解决方案1】:

我发现了问题。问题是我在服务器调用之前将我的文本字段添加为第一响应者,然后仅在您点击返回按钮或点击任何其他文本字段时才将其删除。这就是为什么按下后退按钮时它没有辞职的原因。现在我在服务器调用后不久就辞职了。

【讨论】:

  • 很高兴您解决了这个问题,但这与我上次评论中的建议有何不同?
  • 好吧,据我了解,按你的方式行事对我没有帮助,因为我的文本字段仍然充当响应者,并且在使用 keyboardwillhide 方法之后,即使我们在那里放置一个 return 语句,它总是会转到 textFieldWillRespond .
  • 是的,我一开始误解了你的问题,但最后建议你打电话给resignFirstResponder,因为你有这个领域的参考。这并不重要。如果它有效并且其他人可以在这里找到答案,那么一切都很好。
【解决方案2】:

编辑:我误解了这个问题。请参阅 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.
}

【讨论】:

  • 这没有帮助。放置 return 语句不会破坏流程。它仍然带我去 textFieldShouldBeginEditing:(UITextField *)iTextField 方法 :(
  • 那我没有正确理解你的问题。你是说当你离开字段的父视图控制器时调用textFieldShouldBeginEditing:
  • 让我更详细地解释一下。当我点击我的文本字段时,我通过 self.parentController setFirstResponderView:iTextField] 将该文本字段设置为我的第一响应者。现在,当我单击后退按钮时,我无法辞去该文本字段的第一响应者的职务。这是造成问题的原因。
  • 我知道键盘在导航时会消失,但随后又会出现,那是因为我的文本字段仍然是该文本字段的第一响应者。我没有辞职。
  • 为什么不保留对文本字段的引用并调用resignFirstResponder
猜你喜欢
  • 2017-03-27
  • 1970-01-01
  • 2017-01-22
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多