按下另一个按钮时,执行当前的UITextField自动更正建议

Jer*_*ler 26 iphone uitextfield ios

我正在我的应用程序中实现聊天,非常类似于iPhone的内置消息应用程序.我在按钮旁边有一个UITextField.用户在文本字段中键入内容,并且文本字段通常表示各种自动更正.在内置的消息应用程序中,点击发送按钮将导致当前可见的自动更正建议执行.我在我的应用程序中寻求这种行为,但一直无法找到任何东西.

有没有人知道在激活完全独立的控件时以编程方式执行UITextField当前可见的自动更正/自动完成建议的方法?这显然是可能的.

Lil*_*ard 38

打电话-resignFirstResponder给球场.这迫使它接受自动更正.如果您不想关闭键盘,可以立即-becomeFirstResponder再次拨打电话.

  • 如果你要再次调用`-becomeFirstResponder`,请确保它实际上有焦点开始.使用`editing`属性来测试它(检查`isFirstResponder`对UITextFields不起作用). (2认同)

Nic*_*ing 10

对于esilver:你可以通过使用不同的文本字段firstFirstResponder然后让相关的文本字段成为FirstResponder来在不重新响应第一响应者的情况下执行此操作.在这种情况下键盘不会移动,也不会触发任何隐藏通知.如果您没有任何其他文本字段,请创建一个虚拟文本字段并将其设置为hidden = YES.

-(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]];
}
Run Code Online (Sandbox Code Playgroud)

  • 对于任何尝试虚拟文本字段策略的人,请确保它具有相同的父超级视图,否则将忽略becomefirstResponder! (4认同)

Max*_*ann 6

由于辞职和重新假设第一响应者可能有副作用(许多通知,键盘显示/隐藏触发器等),我一直在寻找一种替代的,不那么野蛮的方式.经过一番搜索后,我发现这是接受UITextView(或UITextFieldfwiw)自动修正所需要做的全部内容:

[textView.inputDelegate selectionWillChange: textView];
[textView.inputDelegate selectionDidChange: textView];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 ;)