UITextField和UIPickerView

3

当选中UITextField时,是否可能出现UIPickerView而不是键盘?在Interface Builder中的每个选项都是某种类型的键盘。

我想我可以通过编程方式创建一个UIPickerView,并在UITextField注册touchUpInside事件时创建一个,然后告诉UITextField放弃第一响应者,但这似乎有点繁琐。

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

谢谢!

1个回答

6
您可以实现以下代码并覆盖默认行为(即显示键盘):
#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],那么键盘就会显示出来,对吧? - John Frankes
不一定;textFieldShouldBeginEditing: 是一个委托方法,不属于任何层次结构。您应该“返回YES”以显示键盘。在您的逻辑中,您应该决定是否显示键盘(返回YES或NO即可)。 ;) - Adrian Kosmaczewski
谢谢akosma,我是纯粹偶然发现这个的,当时正在尝试写一个替代键盘,结果痛苦不堪,正好休息一下。拖延万岁! - willc2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接