【问题标题】:UITextField textFieldDidEndEditing not called from enable to disabled UITextFieldUITextField textFieldDidEndEditing 未从启用调用到禁用 UITextField
【发布时间】:2015-07-07 15:21:20
【问题描述】:

在 Swift 中,我有一个 UITextField textA 和一个 UITextField textB。

textA 有时会被禁用,但 textB 始终处于启用状态。

textA 被禁用:

textA.enabled = false

当我点击 textB 外部时,键盘应该退出

func textFieldDidEndEditing(textField: UITextField) {
    textField.resignFirstResponder()
}

此委托函数会触发,但有一个例外。如果我正在编辑textB,并且在禁用时单击到textA,则textFieldDidEndEditing不会调用textB,并且键盘保持打开状态。

如果启用了 textA,并且我在编辑 textB 后单击它,那么 textFieldDidEndEditing 确实会为 textB 触发。

关于如何让代理被解雇的任何想法?

【问题讨论】:

    标签: ios iphone swift uitextfield uitextfielddelegate


    【解决方案1】:

    当 textA 未启用时,它不会注册点击,因此无法成为 firstResponder,因此 textB 仍然是响应者。

    【讨论】:

    • 正确,textA.enabled = false 表示触摸事件被忽略,因此您实际上并没有结束对 textB 的编辑。
    • 有没有办法在 textA 上禁用编辑,以便 textB 将在 textA 上点击结束编辑?
    • 您可以启用 textA 并实现 - textFieldShouldBeginEditing: 委托以不允许编辑 textA
    • 我设置-textFieldShouldBeginEditing返回false,结果是一样的。 'textFieldDidEndEditing' 不会为 textB 触发
    • 在返回False之前可以使用textB的textFieldShouldBeginEditingresignFirstResponder
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多