ios - 为什么 UITextField 在输入字符串的末尾添加空格?
问题描述
在花时间进行调试之后,我发现 UITextField 将空格添加到从剪贴板粘贴的字符串中。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var input: String
let newString = string.trimmingCharacters(in: .whitespacesAndNewlines) // newString = "123"
if let oldString = textField.text { // oldString = "456"
input = oldString
input.insert(contentsOf: newString, at: input.index(input.startIndex, offsetBy: range.location)) // rang.location = 2, input = "4 123 56" but it supposed to be "412356"
} else {
input = newString
}
return true
}
我有两个问题:
1-为什么它只能通过粘贴第二次或更多次才能发生?
2-如何避免将这些空格添加到粘贴的字符串中?
解决方案
您可能正在观察smartInsertDeleteType
属性的影响。你可以像这样改变它:
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.smartInsertDeleteType = .no
}
}
推荐阅读
- r - 警告消息:要替换的项目数不是替换长度的倍数
- python - 提高 numpy 中 levenshtein 距离的性能
- elasticsearch - 如何在多个搜索结果中标准化分数
- html - SVG 不适合屏幕 html 的全宽和高度 - 没有响应
- registry - Edge-Chromium GP - 如何将 google 设置为默认值、绕过首次运行对话框以及没有新闻的标签页?
- android - Flutter with Firebase Google 登录:断言失败 network_image_io.dart
- pandas - Pandas:如何使用单独的 y 轴进行绘图,但仍控制顺序?
- pandas - 名称 _stringify_path 未定义
- amazon-web-services - SQS 策略不授予访问权限
- python - 运算符作为 IF 的参数返回 SyntaxError: invalid syntax