你能以编程方式接受 UITextView 中的拼写更正吗?

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于你能以编程方式接受 UITextView 中的拼写更正吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能以编程方式访问当前的 Heroku dyno id/name 吗?

你能以编程方式知道 GPU 中每个块的最大块数和线程数吗?

你能以编程方式在iOS 8(w / Swift)中切换“请勿打扰”模式吗?

如何以编程方式关闭 UITextView 中的自动更正弹出框?

我可以在 UITextView 中以编程方式选择文本吗?

你能以关系数据库可以理解的方式表示应用程序对象吗?