'完成'按下时隐藏UITextView的虚拟键盘
问题描述:
当'完成'按下时,我想隐藏(resignFirstResponder
)UITextView
的虚拟键盘。在UITextView
的Theres没有'退出结束'。在UITextField
我连接了'出口退出'与IBAction
并呼吁resignFirstResponder
方法。我如何用UITextView
来做到这一点?'完成'按下时隐藏UITextView的虚拟键盘
答
这里是“完成”的配件的雨燕版按钮:
@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()
}
答
,如果你希望能够使用您的返回键 [[self view] endEditing: YES];
答
来处理这是在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];
}
这应该会导致在键盘上方的标准工具栏中出现工作“完成”按钮。
答
确保您声明支持UITextViewDelegate
协议。
@interface ...ViewController : UIViewController
`in .h file。
在.m文件,实现以下方法
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES; }
我喜欢这个解决方案。在Xamarin.IOS中相当于 View.EndEditing(true); – 2015-10-15 13:56:56