动态更新UITextView autocapitalizationType
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态更新UITextView autocapitalizationType相关的知识,希望对你有一定的参考价值。
我有一个带有UITextView的空白测试应用程序,并且我添加了此委托方法:
func textViewDidChange(textView: UITextView)
if textView.text.hasPrefix("Cap")
textView.autocapitalizationType = .AllCharacters
else
textView.autocapitalizationType = .Sentences
如果用户在文本开头输入“ Cap”,我希望textView更改为.AllCharacters autocapitalizationType。如果他们删除该前缀,则应改回句子。
代码被调用但不被接受,键盘也没有变化以反映这一点。我知道如何微调textView来更新大写吗?
答案
非常有趣的问题。实际上,autocapitalizationType
不会在有键盘的情况下发生变化,但是您可以通过辞职并再次使其成为第一响应方来nudge它:]
textView.autocapitalizationType = .AllCharacters // slow operation textView.resignFirstResponder() textView.becomeFirstResponder()
问题是此过程很慢,因此每个字符之间会有很大的延迟,因此您应该执行一次此操作。
func textViewDidChange(textView: UITextView) if textView.text.hasPrefix("Cap") if textView.autocapitalizationType != .AllCharacters textView.autocapitalizationType = .AllCharacters textView.resignFirstResponder() textView.becomeFirstResponder() else textView.autocapitalizationType = .Sentences
我希望有帮助。
另一答案
辞退第一响应者以强制执行autocapitalizationType更改不是很干净。而是在更改autocapitalizationType后调用UITextView.reloadInputViews()。键盘保持打开状态,并使用新的autocapitalizationType值。根据reloadInputViews()文档:
以上是关于动态更新UITextView autocapitalizationType的主要内容,如果未能解决你的问题,请参考以下文章
动态 UITableViewCell 高度内的动态 UITextView?