我看到很多帖子(例如"hide keyboard for text field in swift programming language")关于如何在点击返回按钮后使键盘消失,或者点击UITextView外部(随后重新签名第一响应者,和/或将endEditing设置为true)。这不是我想要做的;我也不想使用返回键 - 我希望用户能够使用返回键实际为他们在UITextView中输入的文本添加换行符 - 也不要强迫用户点击外面以便关闭键盘。
在iPad上有一个“关闭键盘”按钮,它自然会出现,作为键盘本身的一部分,可以解除键盘。它通常位于键盘的右下方(右移键的下方),它是一个带有向下箭头的键盘的小图片。
如何在iPhone上启用此按钮,即显示的键盘还包括关闭按钮?
这篇文章:"dismiss iphone UITextView Keyboard"似乎主张在键盘顶部添加一个工具栏。有没有办法简单地选择一个包含dismiss-key选项的可选键盘,类似于在预期电子邮件地址时可以在主键盘屏幕上为键盘提供“@”的方式?
感谢。
PS-为清晰起见:我不想将返回键设置为“完成”(根据this post),我想将其保留为返回键。我愿意添加一个额外的UIButton,如果这是唯一的方法,但似乎应该有一个键盘选项,除了返回键之外,还包括一个关闭按钮。
答案 0 :(得分:4)
我' M伤心地说,正确的答案你的要求是没有可能的方式做你想做的。
正如您从研究中获得的那样,社区已经找到了很多工作,但这就是我们所拥有的。
答案 1 :(得分:1)
添加通知,当键盘即将显示时将触发该通知
然后自定义视图,在这里您可以将其更改为按钮
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeContentViewPoint:) name:UIKeyboardWillShowNotification object:nil];
- (void) changeContentViewPoint:(NSNotification *)notification{
NSDictionary *userInfo = [notification userInfo];
NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGFloat keyBoardEndY = value.CGRectValue.origin.y; // get the y of the keyboard
NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey];
// add animation, make your view move as the keyboard moves
[UIView animateWithDuration:duration.doubleValue animations:^{
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:[curve intValue]];
_mainView.center = CGPointMake(_mainView.center.x, keyBoardEndY - STATUS_BAR_HEIGHT - _mainView.bounds.size.height/2.0); // keyBoardEndY including the height of the status bar, so get rid of this height.
}];
}