Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITextField和UIPickerView_Iphone_Objective C_Cocoa Touch_Uitextview_Uipickerview - Fatal编程技术网

Iphone UITextField和UIPickerView

Iphone UITextField和UIPickerView,iphone,objective-c,cocoa-touch,uitextview,uipickerview,Iphone,Objective C,Cocoa Touch,Uitextview,Uipickerview,选择UIExtField时是否可能出现UIPickerView而不是键盘?Interface Builder中的每个选项都是某种键盘 我想我可以以编程的方式创建一个UIPickerView,并在UITextField注册touchUpInside事件时创建一个UIPickerView,然后告诉UITextField辞职FirstResponder,但这似乎有点像黑客 有没有一种“官方”或更“正确”的方法来做到这一点 谢谢 您可以实现此代码并覆盖默认行为(即显示键盘): 与其显示UIAlertVi

选择UIExtField时是否可能出现UIPickerView而不是键盘?Interface Builder中的每个选项都是某种键盘

我想我可以以编程的方式创建一个UIPickerView,并在UITextField注册touchUpInside事件时创建一个UIPickerView,然后告诉UITextField辞职FirstResponder,但这似乎有点像黑客

有没有一种“官方”或更“正确”的方法来做到这一点


谢谢

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


与其显示UIAlertView,不如显示自己的UIPickerView并完成自己的工作。

@akosma好主意!我没有意识到这会覆盖显示键盘。如果你要调用[super textField shouldbeginediting:textField],会显示键盘,对吗?不一定;textFieldShouldBeginEditing:是一个委托方法,不属于任何层次结构。您应该“返回是”以显示键盘。那么,按照你的逻辑,你应该决定是否显示键盘(返回是或否就可以了;)谢谢你,阿科斯玛,我发现这纯粹是偶然的,当时我正在痛苦地尝试编写替换键盘。拖延FTW!
#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;
}