2015-10-31 3 views
0

В моем родном приложении iOS у меня есть экран, содержащий простой текстовый просмотр. Мне нужно настроить размер/кадр текстового вида при появлении клавиатуры. Я сменил его UIKeyboardDidShowNotification, как показано ниже:Есть ли какие-либо возможные пути/делегаты для определения состояния входного аксессуара клавиатуры UITextView

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myKeyBoardIsOnScreen:) name:UIKeyboardDidShowNotification object:nil]; 

и установка рамы на:

- (void)myKeyBoardIsOnScreen:(NSNotification*)notification { 
    NSDictionary* keyboardInfo = [notification userInfo]; 
    NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey]; 
    CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue]; 

    self.textView.frame = CGRectMake(self.textView.frame.origin.x, self.textView.frame.origin.y, self.textView.frame.size.width, self.view.frame.size.height-keyboardFrameBeginRect.size.height-self.textView.frame.origin.y); 
} 

Проблема: Это выглядит нормально в первый момент. Но позже я понял, что рамка клавиатуры имеет высоту его аксессуаров. Поэтому, когда я скрываю вид аксессуара, перетаскивая его, текстовое изображение кажется сломанным.

Следовательно, кто может предложить мне любые возможные пути/делегатов, чтобы определить состояние зрения ввода аксессуар клавиатурных TextView в (например: Input аксессуар вид показан/скрыт, и т.д.).

NB: мне нужно вид аксессуаров. Поэтому мне не нужно его удалять.

ответ

1

Зарегистрируйтесь как наблюдатель для UIKeyboardDidChangeFrameNotification, чтобы обновить рамку вашего представления.

Apple Docs

+0

Wow ... !!! Большое спасибо Колину. Я действительно пропустил это. Спасибо за поддержку.... :) –