有没有办法通过 Swift 代码禁用 UITextView 中的 iOS 键盘文本替换?
(设置 > 常规 > 键盘 > 文本替换)
注意:
textView.autocorrectionType = .no
不影响文本替换。
我们可以分析文本替换有哪些独特的“特征”,并在
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
}