【问题标题】:How to disable keyboard but enable UITextFields when using UIDatePicker?使用 UIDatePicker 时如何禁用键盘但启用 UITextFields?
【发布时间】:2013-05-18 23:27:05
【问题描述】:

这个有点难以解释,所以请提出任何需要澄清问题的问题。我有一个 iPad 应用程序(XCode 4.2、iOS 6、ARC 和 Storyboards)。

在这个应用程序中,我有一个 UIPopover,其中包含一个 UIView,其中包含两 (2) 个 UITextFields 和一个 UIDatePicker。 (见图)。当我去那个场景时,我在两个文本字段上都取消了userInteractionEnabled 以防止键盘响应,这有效,但不允许在第一个之后访问另一个UITextField。我试过[oFinishTime setInputView:oTimePicker];,但它需要时间选择器并将其移到弹出框之外,这是不可接受的。

我为每个文本字段“连接”了touchUpInside 事件,但由于未选中 UserInteractionEnabled,因此在点击时都没有调用任何事件。如果我可以启用它并在操作事件中设置一个标志,我可以解决整个问题。

我怎样才能同时启用UITextFields 并阻止键盘显示?我很乐意发布您需要查看的任何相关代码。

【问题讨论】:

  • 答案已经给出,但您的方法有一个基本问题:为什么使用文本字段而不是带有 2 个单元格的“UITableView”?在“didSelectRow:atIndexPath”部分显示选择器并记住被提示的单元格。如果用户不小心更改了它,也可能是“设置”或“回退”按钮;)
  • 使用 textFields 因为这是我设计的方式。 UITableView 无法完成我需要对数据执行的操作。并且下面的答案不完整,因为水龙头没有被识别。
  • 我觉得你需要设置textfield的inputview。

标签: ios xcode uitextfield uidatepicker


【解决方案1】:

可能是我没有正确理解您的问题,但您似乎只是在点击打开一个选择器并显示在 UIPicker 中设置的值。您并没有真正使用 UItextField 的任何功能。标签或按钮可能起到相同的作用,并且使您免于执行禁用键盘的额外工作。

在任何情况下,如果您想使用文本字段并禁用键盘选择器作为输入视图出现并拥有自己的输入视图,您可以这样做

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

你可以看看这个: Display datepicker on tapping on textfield

【讨论】:

    【解决方案2】:
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
    

    为每个文本字段分配委托,并在委托方法中验证它是否应该打开选择器而不是键盘。 如果是那个,则返回 NO 否则是的

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
          if (textfield == startTimeTextField)
           { 
              [self openPicker];
              return NO;
            }
        return YES;
    }
    

    【讨论】:

    • 两个文本字段上的点击仍然无法识别。如果我可以让水龙头被识别,那么我就解决了这个问题。 用户交互在两个文本字段上都启用了。
    • 我已经更新了关于如何打开选择器的答案。你可以在这个方法上应用断点来验证你的委托方法是否被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2019-11-26
    • 2018-04-22
    • 1970-01-01
    • 2015-05-17
    • 2015-11-20
    • 2023-03-23
    相关资源
    最近更新 更多