如何在使用UIDatePicker时禁用键盘但启用UITextField?

时间:2013-05-18 23:27:05

标签: ios xcode uitextfield uidatepicker

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

在此应用中,我的UIPopover包含UIView,其中包含两个(2)UITextFieldsUIDatePicker。 (见图)。当我去那个场景时,我在两个textFields上取消选中userInteractionEnabled以防止键盘响应,这有效,但不允许在第一个之后访问其他UITextField。我尝试了[oFinishTime setInputView:oTimePicker];,但需要时间戳并将其移到弹出框之外,这是不可接受的。

image showing 2 uiviews and a datepicker

我为每个textField都有touchUpInside个事件“有线”,但由于未选中UserInteractionEnabled,因此在点击时都不会调用它们。如果我可以启用它并在动作事件中设置一个标志,我可以补救这一切。

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

2 个答案:

答案 0 :(得分:5)

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.

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

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

答案 1 :(得分:4)

可能是我没有正确理解你的问题,但似乎你所要做的就是点击打开一个选择器并显示UIPicker中设置的值。您实际上并未使用UItextField的任何功能。标签或按钮可能起到同样的作用,使您无需执行禁用键盘的额外工作。

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

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

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