У меня была та же проблема сегодня, и я удивился, почему она работает в образце кода Apple KeyboardAccessory.
Так что я сделал реверс-инжиниринг. ViewController не был ошибкой, которую я сделал в моем случае.
В реализации UIApplicationDelegate есть точка входа приложения, где будет установлен корневой viewcontroller и окно - (void) applicationDidFinishLaunching:(UIApplication *)application
. Если вы забыли добавить представление корневых viewcontrollers в окно как подпредставление, кнопка dismiss-keyboard-button не будет работать ни в одном представлении вашего приложения.
@class ViewController;
@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ViewController *viewController;
@end
...
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
Пожалуйста, не забудьте настроить розетки в основном файле xib.
Я не знаю, почему это связано с поведением клавиатуры. Но моя теория заключается в том, что цепочка респондента не связана с окном, но это необходимо.