在 UITextView 中禁用 iOS 键盘文本替换

问题描述 投票:0回答:1

有没有办法通过 Swift 代码禁用 UITextView 中的 iOS 键盘文本替换?

(设置 > 常规 > 键盘 > 文本替换)

注意

textView.autocorrectionType = .no
不影响文本替换。

swift uitextview
1个回答
0
投票

我们可以分析文本替换有哪些独特的“特征”,并在

shouldChangeTextIn
委托方法中检查这些特征,当我们认为这是文本替换时返回
false

据我观察,文本替换具有以下特点:

  • replacementText
    不为空。用户无法在文本替换设置中添加空条目。
  • range
    不为空。
  • 未选择
  • range
    。这就是文本替换与用户选择一系列文本并开始输入新文本、替换所选内容的区别。

反转条件,我们可以像这样实现

shouldChangeTextIn

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    return text.isEmpty || range.length == 0 || textView.selectedRange == range
}
© www.soinside.com 2019 - 2024. All rights reserved.