nat*_*ate 4 cocoa-touch uitextview ios swift
我有一个带有 UITextView 的空白测试应用程序,并且添加了此委托方法:
func textViewDidChange(textView: UITextView) {
if textView.text.hasPrefix("Cap") {
textView.autocapitalizationType = .AllCharacters
} else {
textView.autocapitalizationType = .Sentences
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户在文本开头键入“Cap”,我希望 textView 更改为 .AllCharacters autocapitalizationType。如果他们删除该前缀,它应该变回句子。
该代码被调用但不被执行,并且键盘不会改变以反映这一点。知道如何推动 textView 来更新大写字母吗?
非常有趣的问题。事实上,autocapitalizationType当键盘存在时,它不会改变,但你可以通过放弃它并使其再次成为第一响应者来推动它:
textView.autocapitalizationType = .AllCharacters
// slow operation
textView.resignFirstResponder()
textView.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)
问题是这个过程很慢,所以你会感觉到每个角色之间有很大的延迟,所以你应该执行一次这个操作。
func textViewDidChange(textView: UITextView) {
if textView.text.hasPrefix("Cap") {
if textView.autocapitalizationType != .AllCharacters {
textView.autocapitalizationType = .AllCharacters
textView.resignFirstResponder()
textView.becomeFirstResponder()
}
} else {
textView.autocapitalizationType = .Sentences
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |