2012-04-19 6 views
1

OS XのNSDatePickerに似たビューがありますが、日付全体ではなく期間(時間、分、秒)を選択することができます。 Google検索で有用なものは得られませんでしたが、NSDatePickerのカスタマイズにはまだ成功しませんでした.12時間(AMとPM)の日付モードと時間帯では正しく動作しません。AppKit:期間ピッカービュー

+0

あなたが期間を言うとき、あなたは10を意味し、午前10時30分05秒と言う、あなたがしたいことを意味しています時間10:30:05ではなく時間30分5秒?どのような値の範囲が必要ですか?たとえば、時間を2桁、3桁に設定したいと思っていますか? – rdelmar

+0

はい、それは期間の意味です。 1桁の時間で十分です。あなたがそのように振る舞うように(NSDatePickerを微調整する)例を与えることができれば、それで十分でしょう。 – MrMage

+0

私の編集した答えを見る – rdelmar

答えて

1

既成の解決策はありませんが、3つの境界線のないテキストフィールドとコロン付きのラベルを使って自分自身を作成するのは難しくありません。それの隣のステッパー。

私は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); 
} 
+0

この解決策は動作しているようです。ありがとう! – MrMage

0

-[NSDatePicker setDatePickerElements:] methodを使用すると、日付ピッカーが日付の時間部分のみを表示するように設定できます。

+1

はい、それでも、タイムゾーンと午前/午後の設定のために奇妙な動作をする場合があります... – MrMage

関連する問題