在 iPhone 应用程序的键盘上添加“完成”和“换行”按钮

Posted

技术标签:

【中文标题】在 iPhone 应用程序的键盘上添加“完成”和“换行”按钮【英文标题】:Add 'Done' and 'New line' buttons on keyboard in iPhone application 【发布时间】:2011-02-02 10:53:49 【问题描述】:

我创建了一个基于窗口的应用程序,其中UITabbarControllerRootViewController。 在其中一个选项卡中,我提供了UITextFieldUITextView。 我想在键盘本身上提供两个按钮:

完成 - 这将隐藏键盘。 输入 - 换行。

如果有人知道如何做,请发布您的答案。

【问题讨论】:

您可以在工具栏上添加这两个按钮,然后通过动画将其放在键盘顶部。 键盘对于 t​​extView 和 textfield 的新行具有返回键,您也不需要任何新行。 【参考方案1】:

对于 UITextField,您可以通过设置以下内容将返回键更改为完成键:

targetTextField.returnKeyType = UIReturnKeyDone;

但是,如果不向键盘自定义添加视图,您将无法同时拥有 Enter 和 Done 键。

此外,要控制键盘的完成行为,您必须实现 UITextFieldDelegate 方法:

targetTextField.delegate = self;
- (BOOL)textFieldShouldReturn:(UITextField *)textField
     return YES;  //dismisses the keyboard

我知道您可以为 UITextView 设置 returnKeyType,但我不确定您是否可以操纵返回键行为。

【讨论】:

【参考方案2】:

您有一个关于如何将子视图添加到 iPhone 键盘的教程:

http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/7350-adding-subviews-custimize-keyboard.html

希望这会有所帮助, 文森特

【讨论】:

【参考方案3】:

由于某种原因返回YES;没有自己工作。对我有用:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

    if (textField.returnKeyType == UIReturnKeyNext) 
        NSInteger nextTag = textField.tag + 1;
        // Try to find next responder
        UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
        if (nextResponder) 
            // Found next responder, so set it.
            [nextResponder becomeFirstResponder];
        
    

    if (textField.returnKeyType == UIReturnKeyDone) 
        [textField resignFirstResponder];
    
    return YES;  //dismisses the keyboard

【讨论】:

以上是关于在 iPhone 应用程序的键盘上添加“完成”和“换行”按钮的主要内容,如果未能解决你的问题,请参考以下文章

移除 iphone 键盘上方的“bar”

删除 iphone 普通键盘中的完成按钮

完成按钮仅适用于数字键盘

在 iPhone 小键盘 iOS9 上方添加自定义按钮

在 iPhone 中禁用数字键盘上的解析

关闭 iPhone 模拟器上的键盘