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

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

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

like this.

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

谁能帮帮我。

【问题讨论】:

    标签: iphone


    【解决方案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,我使用第一个链接,这解决了我的问题
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 2014-03-05
    • 2016-03-19
    • 2016-01-08
    • 2021-07-20
    • 2023-03-15
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多