开发者

Done key in iPhone app that closes keyboard (with UITextView)

I'm working on an iPhone app and in the iPhone app the user is typing in an UITextView. I was wondering how I could add the done key on the keyboard instead of having the normal re开发者_运维知识库turn key and when you click on that key the keyboard closes.

Thanks!


There is no -textViewShouldReturn: method in the UITextViewDelegate protocol. If you want the return (done) key to dismiss the keyboard, it's probably best to use a UITextField instead, UITextView is intended for editing multiple lines of text (so you need a way to enter a linebreak).

If you really want to dismiss the keyboard when hitting the return key in a UITextView, you could probably do something like this:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  if ([text isEqual:@"\n"]) {
    [textView resignFirstResponder];
    return NO;
  }
  return YES;
}


It's as simple as:

textField.returnKeyType=UIReturnKeyDone;

Add this to your text field's delegate to remove the keyboard when it's pressed:

- (BOOL)textFieldShouldReturn:(UITextField *)aTextfield {
    [aTextfield resignFirstResponder];
    return YES;
}


In addition to setting:

textField.returnKeyType = UIReturnKeyDone;

you need to set the text field's delegate to your class, and do something like this:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

    return YES;
}

This setting the returnKeyType can be done from Interface Builder as well - if you have your UI defined in a XIB. On the other hand the -resignFirstResponder will make sure that the keyboard disappears. It should be done in the -textFieldShouldReturn: delegate method, since that is invoked when the user taps on the Done button.

Hope this helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜