Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS通知问题_Ios_Uitextfield_Uikeyboard - Fatal编程技术网

IOS通知问题

IOS通知问题,ios,uitextfield,uikeyboard,Ios,Uitextfield,Uikeyboard,我正在处理通知,我的理解是,像“textfield shouldbeginediting:(UITextField*)iTextField”这样的IOS通知只有在点击文本字段时才会发布 奇怪的是,当我点击“后退”按钮返回到以前的视图时,我的代码收到了这个通知 我再次收到此通知的可能性有多大。我认为我们不需要注册此类通知。我只注册了键盘隐藏/显示通知 请提出建议。编辑:我误解了这个问题。见OP的答案 嗯,导航时键盘会消失。在这种情况下发布通知是有道理的。忽略响应视图转换而生成的通知的一种方法是跟踪

我正在处理通知,我的理解是,像“textfield shouldbeginediting:(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.
}

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

请考虑使用一个更具描述性的问题标题。这没用。放置return语句并没有破坏流。我仍在使用textFieldShouldBeginEditing:(UITextField*)iTextField方法:(那么我没有正确理解你的问题。你是说当你离开字段的父视图控制器时,
textfield应该开始编辑:
会被调用吗?让我更详细地解释一下。当我点击我的文本字段时,我会通过self将该文本字段设置为我的第一个响应者。parentController setFirstResponderView:ITextField]。现在,当我单击“上一步”按钮时,我无法辞去此文本字段的第一响应者的职务。这造成了问题。我知道键盘将在导航时消失,但它会再次出现,这是因为我的文本字段仍然是此文本字段的第一响应者。我没有辞去此职务。为什么没有保留对文本字段的引用并调用
resignFirstResponder
?很高兴你解决了这个问题,但这与我上次评论中的建议有何不同?好吧,据我所知,按你的方式去做对我没有帮助,因为我的文本字段仍然是一个响应者,在keyboardwillhide方法之后,它总是会变成tExtField将响应,即使我们在那里放置一个返回语句。是的,我起初误解了你的问题,但最后建议你打电话给
resignFirstResponder
,因为你有该字段的引用。这并不重要。如果它起作用,其他人可以在这里找到答案,那么一切都很好。