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.
精彩评论