ページ

2009年7月18日土曜日

ホットキー変更対応(28) - NSUserDefaultsへ保存 #2

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

モデル側(Hotkey)の用意ができたのでコントローラに処理を入れる。

まず初期化コード。
AppController.m

- (void)awakeFromNib
{
_hotkey_register = [HotkeyRegister sharedRegister];

NSNumber* number;
Hotkey *hotkey;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

number = [defaults objectForKey:@"HOTKEY1"];
if (number) {
hotkey = [[[Hotkey alloc] initWithSavekey:@"HOTKEY1" number:number] autorelease];
} else {
hotkey = [[[Hotkey alloc] init] autorelease];
hotkey.savekey = @"HOTKEY1";
hotkey.code = 0x23; // 'S'
hotkey.modifier = cmdKey | optionKey;
hotkey.target = self;
}
[_hotkey_register registHotkey:hotkey];

_text1.hotkey = hotkey;
_text1.target = self;
:


NSUserDefaults から値を取り出しそれを使って - [Hotkey initWithSavekey:number:]でインスタンス化する。もし値がなければ(すなわち初回)Command + Option + S のキー設定を行う。


ホットキーが変更された時には逆に NSUserDefaults へ保存する。
- (BOOL)hotkeyShouldChange:(Hotkey*)hotkey
{
NSLog(@"hotkeyShouldChange was called: %@", hotkey);

[[NSUserDefaults standardUserDefaults] setObject:[hotkey numberValue] forKey:[hotkey savekey]];
[_hotkey_register registHotkey:hotkey];
return YES;
}


これでアプリケーションを終了しても変更内容が次回起動時に反映される。

サンプル:Hotkey-6.zip