我想在“完成”按下时隐藏resignFirstResponder
虚拟键盘UITextView
。 UITextView
中没有'退出时结束'。在UITextField
我将'退出时结束'与IBAction
相关联并调用resignFirstResponder
方法。如何使用UITextView
?
答案 0 :(得分:7)
处理此问题的正确方法是在inputAccessoryView
中向UITextView
添加完成按钮。 inputAccessoryView
有时会出现在键盘上方。
为了实现inputAccessoryView
,只需添加此方法(或其变体)并在viewDidLoad
中调用它。
- (void)addInputAccessoryViewForTextView:(UITextView *)textView{
//Create the toolbar for the inputAccessoryView
UIToolbar* toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[toolbar sizeToFit];
toolbar.barStyle = UIBarStyleBlackTranslucent;
//Add the done button and set its target:action: to call the method returnTextView:
toolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(returnTextView:)],
nil];
//Set the inputAccessoryView
[textView setInputAccessoryView:toolbar];
}
然后通过实施您使用resignFirstResponder
调用的操作方法来按下按钮。
- (void) returnBreakdown:(UIButton *)sender{
[self.textView resignFirstResponder];
}
这会导致键盘上方标准工具栏中出现“完成”按钮。
答案 1 :(得分:4)
我假设通过“完成”按钮表示返回键。它并不像你想象的那么直观。 This question很好地涵盖了它。
答案 2 :(得分:3)
如果您希望能够使用返回键
[[self view] endEditing: YES];
答案 3 :(得分:3)
确保声明支持UITextViewDelegate
协议。
@interface ...ViewController : UIViewController
`
在.m文件中,实现以下方法
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }
答案 4 :(得分:2)
以下是配件“完成”按钮的Swift版本:
@IBOutlet weak var textView: UITextView!
// In viewDidLoad()
let toolbar = UIToolbar()
toolbar.bounds = CGRectMake(0, 0, 320, 50)
toolbar.sizeToFit()
toolbar.barStyle = UIBarStyle.Default
toolbar.items = [
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil),
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "handleDone:")
]
self.textView.inputAccessoryView = toolbar
// -----------------
func handleDone(sender:UIButton) {
self.textView.resignFirstResponder()
}