モデル側(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