Самый простой способ - использовать TextField. Даже если ваш пользовательский интерфейс не вызывает, вы можете установить его кадр на ноль, чтобы он не отображался на экране. Затем вы можете получить доступ к нажатым клавишам, используя методы обратного вызова делегата текстового поля.
- (void)viewDidLoad {
[super viewDidLoad];
//CGRectZero because we don't want the textfield to be shown onscreen
UITextField *f = [[UITextField alloc] initWithFrame:CGRectZero];
//We set the delegate so we can grab keypressed
f.delegate = self;
[self.view addSubview:f];
[f becomeFirstResponder]; //Show the keyboard
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
if (string.length >0) {
NSLog(@"%@ Pressed",string);
}
else {
NSLog(@"Backspcae pressed");
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"return pressed");
return YES;
}
Примечание: чтобы избежать предупреждения компилятора, убедитесь, что в вашем файле .h класс явно говорит, что он реализует протокол UITextFieldDelegate. то есть:
@interface MyViewController : UIViewController <UITextFieldDelegate>