Есть ли вид, похожий на NSDatePicker
для OS X, но для выбора продолжительности (т. Е. Часов, минут и секунд), а не целых дат. Поиск Google не принес ничего полезного, и мне еще не удалось настроить NSDatePicker
, чтобы быть подходящим только для продолжительности - мои попытки не работают должным образом с 12-часовыми (AM и PM) режимами времени и разными часовыми поясами.AppKit: Duration Picker View
ответ
Я не думаю, что есть готовое решение, но не должно быть сложно сделать свой собственный с 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);
}
Это решение работает. Благодаря! – MrMage
Вы можете использовать -[NSDatePicker setDatePickerElements:]
method, чтобы настроить сборщик дат только для отображения временной части даты.
Да, но он по-прежнему ведет себя странно в некоторых случаях из-за часовых поясов и настроек AM/PM ... – MrMage
Когда вы говорите длительности, вы имеете в виду, что вы хотите, скажем, 10:30:05, означает 10 часы 30 минут и 5 секунд, а не время 10:30:05? Какой диапазон значений вы хотите, например, хотите ли вы установить часы на двойные цифры, тройные цифры? – rdelmar
Да, это то, что я имею в виду с продолжительностью. Достаточно одного разряда. Если вы можете привести пример, чтобы настроить 'NSDatePicker', чтобы вести себя так (без глюков!), Этого было бы достаточно. – MrMage
См. Мой отредактированный ответ – rdelmar