作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 iOS 13 中,当实现 shouldChangeCharactersIn
通过 UITextfieldDelegate
,使用滑动键盘时应用程序崩溃。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text as NSString? {
let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
textField.text = txtAfterUpdate
}
return false
}
最佳答案
我能够重现这一点 - 如果您在滑动输入期间改变 UITextField 上的文本状态 - 并且仅在滑动输入期间,它会尝试重新插入滑动的内容(即使您返回 false),这会重新触发您的委托(delegate)事件,这开始了递归循环。
这有点像黑客,但你可以用类似的东西捕获它
private var lastEntry: String?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count > 1 && string == lastEntry { // implies we're swiping or pasting
print("Caught unwanted recursion")
return
}
lastEntry = string
if let text = textField.text as NSString? {
let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
textField.text = txtAfterUpdate
}
return false
}
关于iOS 13 崩溃与 SwipeKeyboard 和文本字段 :shouldChangeCharactersIn:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560843/
在 iOS 13 中,当实现 shouldChangeCharactersIn通过 UITextfieldDelegate ,使用滑动键盘时应用程序崩溃。 func textField(_ t
我是一名优秀的程序员,十分优秀!