古いコードを更新し、ツールバーのスペースを増やすために、ボタンをテストから画像に変換しています。loadViewの新旧のコードの例は次のとおりです。
// New code, doesn't work.
UIButton *toggleKeyboardBtn = [UIButton buttonWithType:UIButtonTypeCustom];
toggleKeyboardBtn.bounds = CGRectMake( 0, 0, showKeyboardImage.size.width, showKeyboardImage.size.height );
[toggleKeyboardBtn setImage:showKeyboardImage forState:UIControlStateNormal];
UIBarButtonItem *toggleKeyboardItem = [[UIBarButtonItem alloc] initWithCustomView:toggleKeyboardBtn];
[toggleKeyboardItem setTarget:self];
[toggleKeyboardItem setAction:@selector(toggleKeyboard:)];
// Original code, works jut fine.
UIBarButtonItem *setupItem = [[[UIBarButtonItem alloc] initWithTitle:@"Setup" style:UIBarButtonItemStyleBordered target:[UIApplication sharedApplication].delegate action:@selector(showSetupView:)] autorelease];
私の新しいコードは、UIBarButtonItemのアクションを設定できませんからコピーされます。テキストボタンが正常に機能しているので、間違いを犯していないことは間違いありません。
showSetupView()は私のAppController.mファイルにあり、ボタンを押すとセットアップ画面が表示されたり消えたりします。
トグルキーボード()、OTOHは、loadView()ルーチンと同じファイルにあり、現在、次のコードで構成されています。
//- (void)toggleKeyboard {
- (IBAction)toggleKeyboard:(id)sender {
NSLog(@"Entering toggleKeyboard()...");
hiddenKeyboard = !hiddenKeyboard;
[self prepareToolbarsAndStatusbar];
}
言うまでもなく、ボタンを押すアニメーションは表示されますが、NSLogメッセージは表示されません。そして最後の観察は、偶然に行われたものです。setActionセレクターを次のように変更します。
[toggleKeyboardItem setAction:@selector(noSuchRoutine:)];
きれいにコンパイルされ、おそらく私のルーチン名が何らかの理由で無視されていることを示しています。
誰かアイデアはありますか?ありがとう。