【问题标题】:Delete (not Backspace) doesn't fire UITextViewDelegate's shouldChangeTextInRange删除(不是退格键)不会触发 UITextViewDelegate 的 shouldChangeTextInRange
【发布时间】:2015-01-03 07:31:24
【问题描述】:

当使用外接键盘时,当我按下退格键(“向后删除”)时,我的 UITextView 会触发 shouldChangeTextInRange 消息,但如果我按下 Delete 键(“向前删除”),则该方法永远不会尽管视图的文本按预期更改,但仍被调用。以防万一,我正在使用 Swift 和最新的 iOS 模拟器。

如果这是预期的行为,有人可以指出解释它的文档吗?

更重要的是,有解决方法吗?

编辑:提交 rdar://18909378。在使用 cmd+backspace 和 opt+backspace 时,我也发现了相同的行为。很烦人!

【问题讨论】:

  • 请向bugreport.apple.com 提交雷达报告问题并编辑您的问题以包含雷达编号,以防其他人想参考它。
  • 也经历过这个,提交了rdar://20252668,希望尽快解决这个问题
  • 与 UITextField 相同的问题。

标签: ios uikit uitextview uitextviewdelegate


【解决方案1】:

我仍然在 iOS 10 上看到此问题。我想出的最佳解决方法是收听该字段的 UIControlEventEditingChanged 事件并从那里获取 textField.text。这会为您提供更新的内容,但不允许您像 shouldChangeCharactersInRange 那样阻止删除操作。

【讨论】:

  • 已提交 rdar://29595896:“UITextField 不会调用 shouldChangeCharactersInRange 以响应前向删除”,它与 rdar://24966189 重复(仍处于打开状态)。
猜你喜欢
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多