我想隐藏( )按下“完成”时resignFirstResponder
的虚拟键盘。UITextView
中没有“退出时结束” UITextView
。在UITextField
我用一个IBAction
和调用resignFirstResponder
方法连接“退出时结束”。我该怎么做UITextView
?
问问题
11962 次
5 回答
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];
}
这应该会导致在键盘上方的标准工具栏中出现一个有效的“完成”按钮。
于 2013-07-31T16:14:07.560 回答
4
我假设“完成”按钮是指返回键。它并不像你想象的那么直观。这个问题很好地涵盖了它。
于 2011-03-03T00:57:45.623 回答
3
如果您希望能够使用返回键,可以将其添加到操作中
[[self view] endEditing: YES];
于 2013-03-25T16:32:33.997 回答
3
确保您声明支持该UITextViewDelegate
协议。
@interface ...ViewController : UIViewController
` 在 .h 文件中。
在 .m 文件中,实现以下方法
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }
于 2013-08-02T10:14:12.363 回答
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()
}
于 2015-12-09T05:10:55.927 回答