如何在键盘中添加完成按钮

Posted

技术标签:

【中文标题】如何在键盘中添加完成按钮【英文标题】:how to add done button in keypad 【发布时间】:2011-02-03 07:34:03 【问题描述】:

我需要在键盘上添加完成按钮。

Apple 不提供这样的功能,但我发现一些应用程序可以完成、下一个、上一个按钮。

like this.

如何添加这些以及如何为它们提供点击事件。

谁能帮帮我。

【问题讨论】:

【参考方案1】:

1.定义完成按钮(=返回键):

textField.returnKeyType = UIReturnKeyDone;

2.添加动作监听器:

[textField addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];

3.定义动作事件:

- (IBAction)textFieldDoneEditing:(id)sender 
    [sender resignFirstResponder];

玩得开心!

编辑:

在这里您可以找到详细说明如何在 UITextField 键盘上方添加带有 Next 和 Previous 的 Toolbar: http://www.randomsequence.com/articles/adding-a-toolbar-with-next-previous-above-uitextfield-keyboard-iphone/

EDIT2:

现在,我有一个非常棒的示例:“此视图扩展了 UITextView,在与此 UITextView 关联的键盘顶部添加了一个带有«完成»按钮的工具栏”

我检查了代码,它比第一个示例要容易得多:

http://blog.demay-fr.net/2009/07/cocoa-how-to-add-a-toolbar-with-button-on-top-of-a-uitextview-in-order-to-add-a-dismiss-button/

EDIT3:

嗯,不,我不测试代码。但我现在要测试它!

1.问题:正确的初始化。如果我在 IB 中添加 UITextView,则会调用 initWithCoder:

- (id)init 

    NSLog(@"init");

    if (self = [super init]) 
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    
    return self;


- (id)initWithCoder:(NSCoder *)decoder 

    NSLog(@"initWithCoder");

    if (self = [super initWithCoder:decoder]) 
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    
    return self;


- (id)initWithFrame:(CGRect)frame 

    NSLog(@"initWithFrame");

    if (self = [super initWithFrame:frame]) 
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    
    return self;
 

2.问题:没有前缀为“UIKeyboard”的视图:

for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) 
    NSLog(@"keyboardWindow = %@", keyboardWindow);
    for (UIView *keyboard in [keyboardWindow subviews]) 
        NSLog(@"keyboard = %@", keyboard);

            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) 
                // THERE'S NO VIEW 'UIKeyboard'!!!
            

    

代码不起作用,对不起...我不知道为什么没有视图“UIKeyboard”...也许第一个示例在这一点上会对您有所帮助,您可以构建自己的解决方案。

【讨论】:

谢谢你 Manni,但我只需要完成按钮,当我点击它时,我需要隐藏键盘。我对本教程感到困惑。如果你有任何示例,请发布它 我发现了第二个例子,键盘顶部有一个完成按钮。我希望对你有帮助:-)(看 EDIT2) 我试过这个(EDIT2),但不起作用,我没有在键盘上得到任何工具栏。你测试过吗? 是的,谢谢你帮助 Manni,我使用第一个链接,这解决了我的问题

以上是关于如何在键盘中添加完成按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何添加完成按钮以关闭数字键盘

如何在 iOS 7 上模拟键盘动画以将“完成”按钮添加到数字键盘?

如何在 Swift 2.0 中使用完成按钮做数字键盘?

如何快速将完成按钮添加到数字键盘?

颤振将完成按钮添加到键盘,特别是 CupertinoTextField

如何在PhoneGap textarea中隐藏键盘完成按钮?