Swift: 在iPhone上启用“dismiss keyboard”按钮?
Swift: 在iPhone上启用“dismiss keyboard”按钮?
我看到许多关于如何在按下返回按钮后使键盘消失,或者通过点击UITextView外部(然后放弃第一响应者,并/或将endEditing设置为true)的帖子(例如"hide keyboard for text field in swift programming language")。这不是我想做的;我既不想使用返回键 - 我希望用户能够使用返回键来实际添加换行符到他们在UITextView中输入的文本 - 也不迫使用户点击外部以关闭键盘。
在iPad上,键盘本身会显示一个“关闭键盘”按钮,它通常位于键盘的右下方(在右侧Shift键下方),是一个带有向下箭头的键盘图标。
如何在iPhone上启用此按钮,即使键盘出现时也包括关闭按钮?
这篇帖子:"dismiss iphone UITextView Keyboard"似乎主张在键盘顶部添加一个工具栏。是否没有一种简单选择可包括关闭键选项的可选键盘,类似于在期望输入电子邮件地址时可以在主键盘屏幕上提供带有“@”的键盘?
谢谢。
附言- 为了明确起见:我不想将返回键设置为“完成”(如这篇帖子所述),我想保留它作为返回键。如果这是唯一的方法,我愿意添加一个额外的UIButton,但似乎应该有一种包含关闭按钮的键盘选项,除了返回键。
在iPhone上启用“dismiss keyboard”按钮的问题出现的原因是没有直接的方法可以实现这个功能。尽管社区发现了很多解决方案,但它们只是一些变通方法。有些应用程序(如Messages)使用下滑手势来隐藏键盘,所以我决定实现这个功能。
解决方法如下:
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tapGesture)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
Swift: 在iPhone上启用“dismiss keyboard”按钮?
问题的出现原因:
当用户在iPhone上使用软键盘输入时,可能会希望有一个按钮用于隐藏键盘。然而,默认情况下,iPhone上的软键盘没有提供此功能。
解决方法:
为了解决这个问题,可以遵循以下步骤:
1.添加一个通知,该通知将在键盘即将显示时触发。
2.自定义一个视图,可以在其中放置一个按钮,用于隐藏键盘。
3.在通知的回调方法中,根据键盘的位置和动画参数,调整自定义视图的位置,使其随着键盘的移动而移动。
以下是使用Objective-C编写的示例代码:
[[NSNotificationCenter defaultCenter] addObserver:self 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; // 获取键盘的y坐标 NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey]; // 添加动画,使自定义视图随着键盘的移动而移动 [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包括状态栏的高度,所以要去除这个高度 }]; }
通过以上步骤,您可以在iPhone上实现一个可隐藏键盘的按钮。