-(void)tappedSendButton:(id)sender
{
// This hack is in place to force auto-corrections to be applied
// before the text is sent.
[self.dummyTextField becomeFirstResponder];
[self.toolbar.textView becomeFirstResponder];
[self sendChatWithBody: [self.toolbar.textView.text copy]];
}
6 回答
这个代码解决了我的问题 .
类别代码 .
在该字段上调用
-resignFirstResponder
. 这迫使它接受自动更正 . 如果您不想关闭键盘,可以立即再次调用-becomeFirstResponder
.对于esilver:你可以通过使用不同的文本字段firstFirstResponder然后让相关的文本字段成为FirstResponder来在不重新响应第一响应者的情况下执行此操作 . 在这种情况下键盘不会移动,也不会触发任何隐藏通知 . 如果您没有任何其他文本字段,请创建一个虚拟文本字段并将其设置为hidden = YES .
由于辞职和重新假设第一响应者可能有副作用(许多通知,键盘显示/隐藏触发器等),我一直在寻找一种替代的,不那么野蛮的方式 . 经过一番搜索,我发现这是接受
UITextView
(或UITextField
fwiw)中的自动更正所需的全部内容:希望这可以帮助 ;)
基于Nick Locking的建议,这里是我们编写的类别方法,用于处理任何待处理的自动更正建议而不解除键盘(并且不触发意志/隐藏/显示通知) .
以下是对所讨论解决方案的快速回顾......
创建一个虚拟文本视图以生成响应者,然后返回到原始textview . 确保它是第一响应者 .
setup:
Method: