Как добавить готовую кнопку на клавиатуре
Мне нужно добавить кнопку на клавиатуре.
Apple не предоставляет такую радость, но некоторые приложения, которые я обнаружил, сделали, затем, предыдущие кнопки.
как я могу добавить их и как я могу дать им событие клика.
Кто-нибудь может мне помочь, пожалуйста.
1 ответ
1. Определите готовую кнопку (= клавиша возврата):
textField.returnKeyType = UIReturnKeyDone;
2. Добавьте слушателя действия:
[textField addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];
3. Определите действие-событие:
- (IBAction)textFieldDoneEditing:(id)sender {
[sender resignFirstResponder];
}
Повеселись!
РЕДАКТИРОВАТЬ:
Здесь вы можете найти подробные инструкции о том, как добавить панель инструментов со следующей и предыдущей клавиатурой UITextField: http://www.randomsequence.com/articles/adding-a-toolbar-with-next-previous-above-uitextfield-keyboard-iphone/
EDIT2:
Теперь у меня есть отличный пример для вас: "Это представление расширяет UITextView, добавляя поверх клавиатуры, связанной с этим UITextView, панель инструментов с кнопкой" Done ""
Я проверяю код, и это намного проще, чем в первом примере:
EDIT3:
Хм, нет, я не проверяю код. Но я проверю это сейчас!
1. Проблема: правильная инициализация. Если я добавлю UITextView в IB, initWithCoder будет вызван:
- (id)init {
NSLog(@"init");
if (self = [super init]) {
//register a specific method on keyboard appearence
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder {
NSLog(@"initWithCoder");
if (self = [super initWithCoder:decoder]) {
//register a specific method on keyboard appearence
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
return self;
}
- (id)initWithFrame:(CGRect)frame {
NSLog(@"initWithFrame");
if (self = [super initWithFrame:frame]) {
//register a specific method on keyboard appearence
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
return self;
}
2. Проблема: нет префикса с префиксом "UIKeyboard":
for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {
NSLog(@"keyboardWindow = %@", keyboardWindow);
for (UIView *keyboard in [keyboardWindow subviews]) {
NSLog(@"keyboard = %@", keyboard);
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
// THERE'S NO VIEW 'UIKeyboard'!!!
}
}
}
Код не работает, извините... Я не знаю, почему нет представления "UIKeyboard"... Может быть, первый пример поможет вам на этом этапе, и вы сможете создать собственное решение.