【问题标题】:Adding a UIDatePicker as an inputView to a textField in iOS 8在 iOS 8 中将 UIDatePicker 作为 inputView 添加到 textField
【发布时间】:2014-09-20 16:42:46
【问题描述】:

我的故事板视图中有一个 UIDatePicker,连接到头文件中的 IBOutlet。

在实现文件中,我为选择器设置了一些属性,然后将其分配给我的文本字段:

[self.txtEndDate setInputView:self.picker];

这在 iOS 7 中运行良好,但在 iOS 8 中它给了我以下错误:

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7c2d8800> should have parent view controller:<InserimentoDurata: 0x7aec2b10> but requested parent is:<UIInputWindowController: 0x7b92b400>'

知道如何解决这个问题吗?

【问题讨论】:

    标签: ios8 uidatepicker


    【解决方案1】:

    在收到来自 Apple 开发人员技术支持的电子邮件后,似乎要将 UIDatePicker(或任何我理解的自定义键盘)添加到 viewController,您不必再将其添加到其视图中,但是您将其添加到其标题栏,然后将其连接到 IBOutlet。

    它对我有用,即使它在 iPhone 5 模拟器中不起作用(所有其他都可以)而且我快疯了。

    我希望这对有同样问题的其他人有所帮助。

    【讨论】:

      【解决方案2】:

      解决方案是在代码中构建您的UIPickerView(将其从情节提要中删除),将其分配给文本字段的 inputView,并在您需要时从那里检索它(而不是保留对它的引用)。基本上,这意味着:

      UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 300, 320, 168)];
      [picker setDataSource: self];
      [picker setDelegate: self];
      picker.showsSelectionIndicator = YES;
      self.textField.inputView = picker;
      

      如果您以后需要它,请使用:

      UIPickerView* pickerView = (UIPickerView*) self.datePartySizeTextField.inputView;
      [pickerView selectRow:1 inComponent:0 animated:NO];
      

      【讨论】:

      • 我尝试这样做,但是当文本字段成为第一响应者时,日期选择器不会出现。我不明白为什么。
      • 是的,事实证明这不再起作用了。与此处描述的问题相同:stackoverflow.com/questions/24366437/…
      • 这绝对有效!在我找到这个答案之前,我什么都做不了!不过,我没有实施您答案的后半部分。相反,我创建了一个选择器属性(而不是 ivar)并在需要时引用它。这是我有据可查的代码示例。我希望这可以节省很多时间和头痛。 stackoverflow.com/a/46047257/3634990
      【解决方案3】:

      UIDatePicker 不应该是任何超级视图的子视图

      问题

      您必须确保分配给 inputView 或 inputAccessoryView 的视图不属于任何父视图。也许当您在 ViewController 中从 xib 创建这些视图时,默认情况下它们是超级视图的子视图。

      解决方案提示

      对将分配给 inputView 或 inputAccessoryView 的视图使用方法 removeFromSuperview

      在此链接中查看详细信息

      Error when adding input view to textfield iOS 8

      【讨论】:

        猜你喜欢
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 2014-08-24
        • 1970-01-01
        相关资源
        最近更新 更多