2011-12-26 82 views
5

在我的应用程序中,我不得不通过键盘填写中存在的值UITextField。我有2 UITextFields。 在第一个文本框的值被取出从键盘 和第二文本字段值从UIPickerViewiPhone:点击UITextField时是否可以隐藏键盘?

牵强等攻第二个文本框我想隐藏的键盘和显示UIPickerView

在这里我想补充什么我为你更好的参考做

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
     [pickerToolBar setHidden:NO];//shows toolbar 
     [pickerTime setHidden:NO];//shows UIPickerView 
     [textField resignFirstResponder]; 
} 

但写完上面的代码后,键盘不会消失。

,如果你有任何想法,然后plz帮助我...

回答

0

如果您正在基于UIPicker填充UITextField,为什么不简单地禁用用户与UITextField的交互?您仍然可以将数据放在那里,用户将无法更改它。要强制键盘但是留下隐患,可以使检测的UITextField当它触及/变更/等,然后它已经辞职第一响应。

+1

我的UIPickerView应该在点击UITextField时打开。 – iPhone 2011-12-26 06:39:28

+1

那么对于willBeginEditing的选项下,有它弹出UIPickerView和辞职第一响应者(摆脱键盘的)。 – 2011-12-26 06:42:12

+2

“willBegingEditing”是这个方法的UITextField? – iPhone 2011-12-26 07:35:47

1

这是不可能隐藏键盘,而重点是里面的UITextField ...

你必须把UIPicker在一定的水平,它不会隐藏在键盘后面,因此它在选择值时不会成为您的障碍。

而且,如果您从UIPicker中选择值,那么为什么需要在UITextField中点击,所以如果您不在UiTextField中敲击,键盘将不会显示...

干杯!

1

尝试用文本字段可编辑属性为FALSE或用户交互启用属性虚假和与开放选择器视图的按钮事件的文本框的大小相同添加一个自定义按钮。

+0

我认为这是最好的解决方案 – Aditya 2011-12-26 07:22:36

2

尝试UITextfield委托方法。将下面的代码放在texfield didBeginEditing方法中。

[texfield resignfirstresonder]; 

然后文本字段将阻止编辑和键盘不会出现。 确保您将文本字段委托添加到文件所有者。

+0

另外,你也可以在你退出响应者之后调用你的UIpickerview显示方法的文本框。代码看起来somhow这样的: - (无效)textFieldDidBeginEditing:(的UITextField *)的TextField { 如果(文本框== URTEXTFIELD) { [文本字段resignFirstResponder]; [pickerview becomeFirstResponder]; } } – iCreative 2011-12-26 06:45:13

1
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
[self.view addGestureRecognizer:gestureRecognizer]; 
gestureRecognizer.cancelsTouchesInView = NO; 


- (void) hideKeyboard 
{ 
    [textfieldname1 resignFirstResponder]; 
    [textfieldname2 resignFirstResponder]; 
} 
+0

你能解释一下吗? – iPhone 2011-12-26 07:32:27

+1

当你在文本框中输入一些文本时,它会生成UITapGestureRecongnizer函数。当你将文本字段从文本字段中移出并单击该视图时,会激发hideKeyboard函数。那么键盘是隐藏的。 – akk 2011-12-26 09:15:28

1

这些答案可能工作,但没有人给你最好的答案;你可以用uipickerview替换键盘视图,当文本框被挖掘时:)

UITextField *field = [[UITextField alloc] init]; 
field.inputView = [[UIPickerView alloc] init];