【问题标题】:UITextField and UIPickerViewUITextField 和 UIPickerView
【发布时间】:2010-01-03 16:55:17
【问题描述】:

在选择UITextField时,是否可以出现UIPickerview而不是键盘? Interface Builder 中的每个选项都是某种键盘。

我想我可以通过编程方式创建一个 UIPickerView,并在 UITextField 注册一个 touchUpInside 事件时创建一个,然后告诉 UITextField resignFirstResponder,但这似乎有点 hack。

是否有“官方”或更“正确”的方式来做到这一点?

谢谢!

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitextview uipickerview


    【解决方案1】:

    您可以实现此代码并覆盖默认行为(即显示键盘):

    #pragma mark -
    #pragma mark UITextFieldDelegate methods
    
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil 
                                                        message:@"Bouh!"
                                                       delegate:nil 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles:nil];
        [alert show];
        [alert release];
        return NO;
    }
    

    与其展示 UIAlertView,不如展示自己的 UIPickerView 并做自己的事情。

    【讨论】:

    • @akosma 好主意!我没有意识到这会覆盖显示键盘。如果你调用 [super textFieldShouldBeginEditing:textField] 来显示键盘,对吧?
    • 不一定; textFieldShouldBeginEditing:是一个委托方法,不属于任何层次结构。您应该“返回 YES”以显示键盘。那么,在您的逻辑中,您应该决定是否显示键盘(返回 YES 或 NO 就可以了;)
    • 感谢 akosma,我发现这纯粹是偶然的,当时我正从痛苦地尝试编写替换键盘中休息一下。拖延FTW!
    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多