【问题标题】:IOS swift 3 crash for UITextFields editing and responderUITextFields 编辑和响应程序的 IOS swift 3 崩溃
【发布时间】:2017-07-03 03:04:05
【问题描述】:

我在处理 UITextFields 和 keyboard 可见性时遇到了一个奇怪的问题。

我当前控制器的目的是让用户编辑一些数据但也可以读取其他一些数据。

所以我决定在其中包含一些文本字段,当用户修改一些数据时,会出现一个按钮,他可以按下它来发送修改。但是要读取其他数据keyboard必须隐藏。

我进行了一些研究以找到一种可行的方法,例如:

  • self.view.endEditing(true)
  • currentTextField.resignFirstResponder()
  • 甚至创建一个“隐藏的 UITextField”,并在处理完成后将其发送给 becomeFirstResponder

这些尝试都没有以隐藏键盘结束,而是以Optional value 崩溃结束

我现在正在使用Swift 3XCode 8.2.1

如果有人有线索,在此先感谢

【问题讨论】:

  • 你能显示一些代码吗?
  • 请输入密码。您是否使用了可选绑定来避免此类崩溃?

标签: ios swift3 keyboard uitextfield first-responder


【解决方案1】:

您的视图控制器需要继承 UITextFieldDelegate。实现此协议定义的功能,您应该拥有所需的控制权。并且不要忘记设置myTextfield.delegate = self -- 或任何实现协议的对象。

一个例子是“DidEndEditing”和类似的。 如果您已经这样做了,请提供一些代码以进一步诊断您的问题。

【讨论】:

    【解决方案2】:

    感谢您的回答,

    我从代码开头实现了 UITextFieldDelegate,我所有的 TextFields 都使用 editingDidBegineditingDidEnd,当我从 API 调用的结果调用下面的代码时发生崩溃

    self.view.endEditing(true)
    

    我刚刚找到了一种在 API 调用之前使用此代码成功隐藏键盘的方法。可悲的是,这种新方法避免了在调用失败时保持键盘可见的可能性。

    【讨论】:

      【解决方案3】:

      self.view.endEditing(true)

      此行不应崩溃。它只是从 UITextfield 辞职响应者。你能给我详细介绍一下你的崩溃吗?发生崩溃时在日志控制台中写入的内容。据我所知 self.view.endEditing(true) 肯定会满足您的要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多