3

因此,我将 UIPickerView 作为我的一个文本字段的 inputView。它完美地工作:它像普通键盘一样向上滑动,我可以选择一个选项,它将填充在文本字段中。

唯一的问题是我可以通过输入直接编辑该字段。如何禁止这种行为?所以连光标都没有出现?

我试过了:

- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField
{
    [self.datePick setHidden:NO];
    return NO;
}

但在这种情况下,选择器完全停止工作 - 它不会出现。

谢谢你的帮助!

4

4 回答 4

4

我最终做了以下事情:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     replacementString:(NSString *)string
{
    if([textField isEqual:self.birthdayF] || [textField isEqual:self.genderF])
        return NO;
    return YES;
}

所以光标仍然存在,但用户无法输入任何内容。

于 2013-07-25T09:38:32.963 回答
0

您可以设置并在上textField.enabled = NO;放置 a并聆听点击以显示您的选择器。UITapGestureRecognizertextField

 - (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; 
  }
于 2013-07-17T07:25:02.367 回答
0

像这样试试

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if([textField isEqual:selectedTextField])
         return NO;

    return YES;
}
于 2013-07-17T07:28:08.693 回答
-1

说您的文本字段名称pickerTextField 现在在 ViewDidLoad 添加以下行

self.pickerTextField.delegate = self; (不要忘记遵守UITextFieldDelegate协议)

而不是实现以下方法

- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField
{
    if([textField isEqual:pickerTextField])
    {
    [self.datePick setHidden:NO];
    return NO;
    }
    return YES;
}
于 2013-07-17T07:39:50.627 回答