10

我将 Xcode beta 7 与 iOS9 模拟器一起使用。使用带有 UIDatePickerModeTime 的 datePickerMode 的 UIDatePicker 只显示小时,而不是分钟。

看截图:

在此处输入图像描述

在 iOS 7 和 8 上,显然它按预期工作,并显示小时和分钟。截屏:

在此处输入图像描述

我真的不想重新发明轮子并滚动我自己的时间选择器。关于为什么会发生这种情况以及如何解决的任何想法?我在谷歌上找不到任何东西。

谢谢,亚历克斯

4

6 回答 6

23

在我的 tableview 中使用 UIDatePickerModeDate 的 UIDatePicker 公开发布 iOS 9.0 后,我遇到了这个问题。

我通过在显示之前更改 UIDatePicker 模式来绕过它,然后将其更改回所需的模式:

[myDatePicker setDatePickerMode:UIDatePickerModeDateAndTime];
[myDatePicker setDatePickerMode:UIDatePickerModeDate];

我猜重绘它可以解决问题。出于兴趣,我认为这实际上不是不显示会议记录的问题,而是子视图中的错误,因为这就是我的样子:

带有白色阻挡空间的 UIDatePicker。

使用 FLEX 进行检查,这是具有纯白色背景的 UIDatePicker 的一部分。

子视图中的 UIDatePicker 错误。

于 2015-09-18T08:59:07.887 回答
8

在 iOS 9 发行说明中找到了对这个问题的有用描述——看来我应该更仔细地阅读这些内容。

UIPickerView 和 UIDatePicker 现在可以调整大小和自适应 - 以前,即使您尝试调整它们的大小,这些视图也会强制执行默认大小。这些视图现在在所有设备上也默认为 320 磅的宽度,而不是 iPhone 上的设备宽度。依赖于旧的默认大小强制执行的接口在为 iOS 9 编译时可能看起来是错误的。遇到的任何问题都可以通过将选取器视图完全约束或调整为所需大小而不是依赖于隐式行为来解决。

iOS 9 发行说明

就我而言,我所要做的就是删除 UIDatePicker 上的所有约束,然后“重置为建议的约束”。重建,现在一切都很好。

于 2015-10-14T16:56:08.877 回答
2

将 Xcode 升级到 7.0 时遇到问题。

根据 LordParsley 的回答,当显示 UIDatePicker 时,中间部分是空白的。

iOS 9 的 UIDatePicker 高度为 216;而早期版本的高度是 162,将高度强制为 162 解决了这个问题。

由于我的视图是在情节提要中定义的,因此我在 UIDatePicker 上设置了高度约束,并在视图的 viewDidLoad 中将 iOS 版本 < 9.0 的高度设置为 162。

- (void) viewDidLoad {
    [super viewDidLoad];

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {
        //
        // NOTE: iOS 9, or Xcode 7, now sets UIDatePicker height at 216; whereas,
        // iOS 8, or Xcode 6.x, set it at 162.
        //
        // If the height is left at 216, then on iOS 7.1, the middle portion of the
        // UIDatePicker control is missing.  Setting the hieght to 162 fixes the issue
        // within this application.
        //
        // UIDatePicker frame cannot be used to adjust the size, therefore use a
        // height contraint to change the size.
        //
        self.dateHeightConstraint.constant = 162;
    }
}
于 2015-09-24T01:30:58.933 回答
1

在 iOS 9 中运行我的应用程序时,我遇到了同样的问题,我的应用程序在 .xib 文件中使用 UIDatePicker。我通过在后面的代码中添加它来解决这个问题:

UIDatePicker* picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 320, 162)];
[self.view addSubview:picker];

我认为,这是旧金山新字体(字体比 Helvetica 大)和 .xib 文件的问题。希望这有帮助。感谢!

于 2015-09-22T05:01:45.043 回答
1

@LordParsley 解决方案成功了。

只是一些额外的细节:

我注意到它发生在 iPhone 5 系列上,而不是在带有前导和尾随约束的 iPhone 6/6 plus 上。显然,该错误仅在其帧宽度为 320 时出现。可能是对导致重叠的选择器子视图的错误计算。这很有趣,因为 Apple 是设置默认值的人,但他们已经监督了这个问题。

无论如何,我希望现在处于测试阶段的 iOS 9.1 可以解决这个问题。

于 2015-09-21T01:34:42.087 回答
0

在 iPhone 5S iOS 9.1 上,当我显示 UIDatePicker 时,我的月份名称被截断。我通过如下设置本地属性解决了这个问题:

NSLocale *uk = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setLocale:uk];
[_backdateDatePicker setCalendar:cal];
于 2015-11-23T23:06:16.313 回答