【问题标题】:Can you programmatically accept a spelling correction in UITextView?你能以编程方式接受 UITextView 中的拼写更正吗?
【发布时间】:2011-04-24 00:42:30
【问题描述】:

我有一个将字符插入 UITextView 的按钮。我希望这个按钮的行为与空格键按钮一样;我希望在按下它时接受待处理的自动更正建议。

这可以吗?如果是这样,怎么做?谢谢!

【问题讨论】:

    标签: ios cocoa-touch uitextview autocorrect


    【解决方案1】:

    我刚刚发现,您可以使用:

    而不是这样做(杀死我的动画):
      [messageField reloadInputViews];
    

    像魅力一样工作。

    【讨论】:

    • @mahboudz 我相信问题的情况是......为什么要投反对票??
    • 原始发帖人没有提到inputViewinputAccessoryView。您是否假设海报的“按钮”是其中之一?不必如此,这会使您的最终解决方案不完整。您可能希望在回答中反映这一点。
    【解决方案2】:

    没有任何 API 可以直接与自动更正交互。但是,不久前我遇到了一个小技巧:如果您退出响应者,则当前显示的自动更正将被接受。因此,您也许可以辞去第一响应者的职务,然后重新分配它:

    [myTextView resignFirstResponder];
    [myTextView becomeFirstResponder];
    

    【讨论】:

    • 执行此操作时 UI 是否会出现问题?
    • 没有。我没有遇到任何问题。
    • 太棒了,我以后可能会用这个。
    • 仅供参考:这会触发 textViewDidEndEditing: 和 textViewShouldBeginEditing: 委托调用和键盘通知。
    【解决方案3】:

    这两种提议的解决方案都不能在 iOS 14 上运行,并且没有任何副作用,例如在旧设备上出现奇怪的动画。

    调用 selectionWillChange 和 selectionDidChange 可以:

    [textView.inputDelegate selectionWillChange: textView];
    [textView.inputDelegate selectionDidChange: textView];
    

    可以在此处找到类似且更受欢迎的问题:Execute current UITextField autocorrect suggestion when another button is pressed

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多