【问题标题】:AppKit: Duration Picker ViewAppKit:持续时间选择器视图
【发布时间】:2012-04-26 09:21:50
【问题描述】:

对于 OS X,是否有任何类似于 NSDatePicker 的视图,但用于选择持续时间(即小时、分钟和秒)而不是整个日期。谷歌搜索没有带来任何有用的东西,而且我还没有成功地将 NSDatePicker 自定义为仅适用于持续时间 - 我的尝试在 12 小时(上午和下午)日期模式和不同的日期模式下无法正常工作时区。

【问题讨论】:

  • 当你说持续时间时,你的意思是你想让 10:30:05 表示 10 小时 30 分 5 秒而不是时间 10:30:05?您想要什么范围的值,例如,您希望能够将小时数设置为两位数、三位数吗?
  • 是的,这就是我所说的持续时间。一位数的小时数就足够了。如果您可以提供一个示例来调整 NSDatePicker 的行为(没有故障!),那就足够了。
  • 我发现我之前发布的内容有些问题,所以我再次编辑它,我认为我发现的效果很好。

标签: macos cocoa time appkit nsdatepicker


【解决方案1】:

我认为没有任何现成的解决方案,但是使用 3 个无边框文本字段和几个带有冒号的标签来制作自己的解决方案应该不难,所有这些都在一个 NSBox 中旁边的步进器。

我想我找到了一种适用于 NSDate 选择器的方法。我不确定为什么其中一些有效,但似乎有必要将语言环境设置为使用 24 小时制的地方,例如日本,并为选择器设置日历。我看到的唯一“故障”是在输入一些 1 位数字时有一点延迟(这是 Apple 在 OS X 10.5 中更改的内容,我认为让编辑器等着看你是否想添加第二个数字)。但是,您可以通过跳出该字段或单击另一个字段来立即更新它。设置如下:

self.picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"];
    self.cal = [NSCalendar currentCalendar];
    self.cal.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];
    self.picker.calendar = self.cal;
    self.picker.timeZone = cal.timeZone;

这里是选择器的操作方法:

    -(IBAction)dpClick:(NSDatePicker *)sender {
    NSDateComponents *comps = [cal components:NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:sender.objectValue];
    NSLog(@"hours=%ld  minutes=%ld  seconds=%ld",comps.hour,comps.minute,comps.second);
}

【讨论】:

    【解决方案2】:

    您可以使用-[NSDatePicker setDatePickerElements:] method 将日期选择器配置为仅显示日期的时间部分。

    【讨论】:

    • 是的,但在某些情况下,由于时区和上午/下午设置的原因,它的行为仍然很奇怪......
    猜你喜欢
    • 1970-01-01
    • 2021-09-05
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    相关资源
    最近更新 更多