当文本框被点击时不显示键盘

4
我在XIB文件中有一个UITextField和一个UIDatePicker,现在我将选定的日期分配给文本字段中的文本值。我已经完成了这个步骤,但我的问题是,当我点击文本字段时,我不想显示键盘。 我确定有人知道答案,如果你能分享一下,我会很高兴 :) 谢谢!
顺便说一句,我尝试了这个方法,但它没有起作用...
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}

请查看以下问题:https://dev59.com/SU7Sa4cB1Zd3GeqP7NkK - Tarek Hallak
你怎么不把文本框禁用呢? - Radu
@Tarek,感谢提供链接,但我并不想改变文本字段的“inputView”,我只是想禁用键盘,以免它弹出,因为我已经将文本字段的值设置为从“UIDatePicker”中选择的值。 - caribbean
5个回答

13

UIDatePicker设置为您的UITextField的inputView。

当用户在UITextField上点击并使用UIDatePicker时,它将替换键盘作为输入视图。

self.dateTextField.inputView = self.datePicker;

作为一个附加问题。这就是你需要做的全部吗?日期选择器会自动填充文本字段吗?还是你需要自己将日期格式化为字符串? - Fogmeister
好的,我也这么想。我以前做过这个,只是想知道是否做了不必要的工作。谢谢 :) - Fogmeister
@Fogmeister,我希望我的 UIDatePicker 固定在屏幕上,因此我不必将 inputView 设置为 datePicker。我只想在点击文本框时键盘不出现。 - caribbean
1
@chibimai 那你应该采用 tarek 的答案。但我只是在想,如果你不希望用户点击它,为什么要使用 UITextField 呢?一个 UILabel 完全可以胜任。 - rckoenes
1
@chibimai,你可以将标签样式设置成类似于UItextField的样式,或者甚至可以将UITextField上的userInteractionEnabled属性设置为NO - rckoenes
显示剩余5条评论

4

您可以在UITextField中设置代理, 并在textFieldShouldBeginEditing方法中返回NO


3

试试这个:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (textField.tag == YOU_TEXT_FIELD_TAG) {
        return NO;
    }
    return YES;
}

不要忘记让yourViewController符合<UITextFieldDelegate>,并设置yourTextField.delegate = self;


1

由于我没有看到完整的答案,而且我也需要,所以在这里我将放置我的代码。

简单地将一些“空白”UIView作为输入视图。

Objective C

  UIView *hideKeyboardView = [[UIView alloc]init];
  self.yourTextField.inputView = hideKeyboardView;

Swift

let hideKeyboardView = UIView()
yourTextField.inputView = hideKeyboardView

-2

我已经修复了它!我在viewDidLoad中添加了以下代码:

    [self.dateField addTarget:self action:@selector(textFieldDidBeginEditing:) 
forControlEvents:UIControlEventEditingDidBegin];

我仍然使用了

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}

无论如何,感谢您的所有帮助!希望这个帖子能帮助其他人。


2
绕过这个问题的方法很奇怪。你可以遵循Tarek或rckoenes的建议。只需将textfield的userInteractionEnabled设置为NO即可。不需要编写代码,只需在XIB中取消勾选该框。 - Fogmeister
@Fogmeister,你是对的。我决定使用rckoenoes的修复版。谢谢! - caribbean

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