【问题标题】:Dont show keyboard when textfield is tapped点击文本字段时不显示键盘
【发布时间】:2013-07-03 08:32:27
【问题描述】:

我的 XIB 文件中有一个 UITextField 和一个 UIDatePicker,现在我将在 UIDatePicker 上选择的日期指定为我的文本字段中文本的值。我做得很好,我现在唯一的问题是我希望在我点击文本字段时不显示键盘。 我相信有人知道答案,如果你能分享我会很高兴:) 谢谢!

顺便说一句。我试过这个,但它没有用..

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

【问题讨论】:

  • 你禁用文本字段怎么样
  • @Tarek,感谢您的链接,但我不想更改文本字段的inputView,我只想禁用键盘以使其不会弹出,因为我已经设置了值的文本字段是从 UIDatePicker 中选择的。

标签: objective-c xcode4.5 uidatepicker


【解决方案1】:

只需将UIDatePicker 设置为UITextField 的inputView。

当用户点击UItextFieldUIDatePicker 时,这将替换键盘作为输入视图。

self.dateTextField.inputView = self.datePicker;

【讨论】:

  • 作为一个附带问题。这就是你所要做的吗?然后日期选择器会自动填充 textField 吗?还是您必须自己获取日期并将其格式化为字符串?
  • 不,您需要自己处理日期选择器中的更改并将日期格式化为字符串以将其显示在UITextField
  • 好的,我是这么想的,我过去做过这个,只是想知道我是否做了我不需要的工作。谢谢:)
  • @chibimai 那么你应该接受 tarek 的回答,但我只是想知道如果你不希望你的用户点击它,为什么还要使用 UITextFieldUILabel 会做得很好。
  • @chibimai 您可以将标签设置为看起来像UItextField,或者甚至将UITextField 上的userInteractionEnabled 设置为NO
【解决方案2】:

您可以在UITextField 中设置委托,并在textFieldShouldBeginEditing 中返回NO

【讨论】:

    【解决方案3】:

    试试这个:

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

    别忘了让 yourViewController 符合 <UITextFieldDelegate> 并设置 yourTextField.delegate = self;

    【讨论】:

      【解决方案4】:

      由于我没有看到完整的答案,我也需要,并在这里找到一些答案的解决方案,我将把我的代码。

      只需将一些“空白” UIView 作为输入视图。

      目标 C

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

      斯威夫特

      let hideKeyboardView = UIView()
      yourTextField.inputView = hideKeyboardView
      

      【讨论】:

        【解决方案5】:

        我已经修好了!我在viewDidLoad上添加了以下代码

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

        我还在用

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

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

        【讨论】:

        • 奇怪的方式。您可以遵循 Tarek 或 rckoenes 的建议。只需将文本字段 userInteractionEnabled 设置为 NO。无需代码。只需取消选中 XIB 中的复选框即可。
        • @Fogmeister,你是对的。我决定改用 rckoenoes fixed。谢谢!
        猜你喜欢
        • 2020-05-17
        • 2018-07-01
        • 2021-03-24
        • 2014-11-24
        • 2016-06-11
        • 1970-01-01
        • 2017-08-14
        • 2021-05-04
        • 2011-05-11
        相关资源
        最近更新 更多