Swift: 在iPhone上启用“dismiss keyboard”按钮?

10 浏览
0 Comments

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,但似乎应该有一种包含关闭按钮的键盘选项,除了返回键。

0
0 Comments

在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)

}

0
0 Comments

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上实现一个可隐藏键盘的按钮。

0