Swift:在iPhone上启用“关闭键盘”按钮?

时间:2015-11-11 03:23:32

标签: ios swift uitextview

我看到很多帖子(例如"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,如果这是唯一的方法,但似乎应该有一个键盘选项,除了返回键之外,还包括一个关闭按钮。

2 个答案:

答案 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. 

    }];



}