Это довольно распространенная тема и содержит много ответов.панель инструментов на верхней панели клавиатуры с первым ответчиком
Ситуация: У меня есть полный экран (минус панель инструментов) UITextView с UIToolbar внизу. когда UITextView получает первого ответчика, я хочу, чтобы панель инструментов скользила вверх по клавиатуре и добавила кнопку «done», которая отменит клавиатуру.
До сих пор: У меня это полностью работающее, основанное на this example. За исключением того факта, что когда я положил [textView becomeFirstResponder];
в свой viewDidLoad
, панель инструментов не оживляет. Даже если вызывается keyboardWillShow
. Кто-нибудь есть идеи?
Код: Точно так же вы не должны проверить пример кода, это то, что происходит:
В viewDidLoad:
- (void)viewDidLoad {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[textView becomeFirstResponder];
[super viewDidLoad];
}
В keyboardWillShow:
- (void)keyboardWillShow:(NSNotification *)notification {
NSLog(@"keyboard will show");
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
[UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(keyboardDone)];
NSMutableArray *toolbarItems = [NSMutableArray arrayWithArray:[toolbar items]];
[toolbarItems addObject:doneButton];
[toolbar setItems:toolbarItems];
CGRect frame = self.view.frame;
frame.size.height -= [[[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue].size.height;
self.view.frame = frame;
[UIView commitAnimations];
}
Вы удивительны! Спасибо. Он не работает в -viewWillAppear: анимированный: но он работает с -viewDidAppear: анимированный. Я не знал порядка, в котором эти загружены, так что спасибо за то, что вы научили меня чему-то новому сегодня. – RyanJM