所以我将UIPickerView作为我的一个文本字段的inputView。 它工作得很好:它像普通键盘一样向上滑动,我可以选择一个选项,它将填充在文本字段中。
唯一的问题是我可以通过输入来直接编辑该字段。 如何禁止这种行为?这样甚至光标都不显示?
我试过了:
- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField
{
[self.datePick setHidden:NO];
return NO;
}
但在这种情况下,选择器会完全停止工作 - 它不会出现。
感谢您的帮助!
答案 0 :(得分:4)
我最终做了以下事情:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([textField isEqual:self.birthdayF] || [textField isEqual:self.genderF])
return NO;
return YES;
}
因此光标仍在那里,但用户无法输入任何内容。
答案 1 :(得分:0)
您可以设置textField.enabled = NO;
并在UITapGestureRecognizer
上放置textField
并听取点击以显示您的选择器。
- (void) viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[textField addGestureRecognizer:tap];
[tap release];
}
- (void) handleTap:(UITapGestureRecognizer *)tap
{
//do stuff
//if you need the textField here
UITextField *text = (UITextField *)tap.view;
}
答案 2 :(得分:0)
试试这个,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if([textField isEqual:selectedTextField])
return NO;
return YES;
}
答案 3 :(得分:-1)
说你的文字域名是pickerTextField
现在在ViewDidLoad中添加以下行
self.pickerTextField.delegate = self
; (不要忘记遵守UITextFieldDelegate
协议)
实施以下方法
- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField
{
if([textField isEqual:pickerTextField])
{
[self.datePick setHidden:NO];
return NO;
}
return YES;
}