2017-10-17 47 views
0

在我的应用程序中,我有很多用户输入数据的UITextFields和UITextViews。当用户点击一个字段时,它成为第一响应者,并且键盘很好地显示出来。当用户点击不同的领域(修改当前领域后),然后键盘消失,当前领域停止成为第一响应者。然而,被挖掘的领域并不会立即成为新的第一响应者,并且键盘关闭。如何获取请求成为第一响应者的UIView?

在我的应用程序中,一个字段被修改后,它会重新计算所有数据并重置所有其他字段中的值。我在想,这是什么导致新窃听的领域放弃它的第一个响应者的请求。有一些字段不受重新计算的影响,并且这些字段的行为是正确的(即它们立即获得焦点并且键盘保持打开状态)。所以我非常确定,更改字段的值或某些属性会重置待处理的第一个响应者请求。

如何检测字段是否在第一个响应者队列中挂起(如果有这样的事情)?

如何在不将其从此队列中删除的情况下进行更改?

+1

没有“第一响应者队列”。通常情况下,如果用户点击一个字段,如果键盘已经显示,它不会消失。所以,你必须让它消失。你需要思考这是为什么。 – matt

+0

是啊...其次,你在这里遇到了什么问题?或者你想要完成什么? – NSAdi

+0

当我点击另一个UITextField时,当前字段的resignFirstResponder()被iOS调用,而不是我的代码(据我所知)。我正在从textFieldDidEndEditing()方法更新其他字段。所以我没有关闭键盘(至少不是直接)。 – zkon

回答

0

好的,我发现了这个问题。我的代码将.isEnabled设置为false,然后将其重置为true。这是导致该领域从第一响应者链中被抛弃的原因。我的代码共享相同的查看和编辑路径,它最初将一个字段设置为禁用,如果我们处于编辑模式,则将其设置为启用。解决这个问题只需将其设置为启用,而不需要初始的全局禁用,即可解决问题。

所以底线是,轻弹.isEnabled开关将从响应者链中删除该字段。

相关问题