Я присоединяю UIToolbar
к своему UITextView
в качестве inputAccessoryView
, чтобы добавить кнопку для закрытия клавиатуры.Это прекрасно работает и выглядит правильно, когда устройство находится в портретном режиме.Но мне трудно понять, как изменить размер панели инструментов до меньшей высоты, используемой для панелей инструментов, когда устройство находится в альбомном режиме.
Я добавляю панель инструментов в метод делегата моего текстового представления -textViewShouldBeginEditing:
:
if (!textView.inputAccessoryView) {
UIToolbar *keyboardBar = [[UIToolbar alloc] init];
keyboardBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
keyboardBar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyboard:)];
[keyboardBar setItems:[NSArray arrayWithObjects:spaceItem, doneButton, nil]];
[spaceItem release];
[doneButton release];
[keyboardBar sizeToFit];
textView.inputAccessoryView = keyboardBar;
[keyboardBar release];
}
Я получаю странное поведение из этого кода в ландшафтном режиме.Если я начинаю редактировать в альбомном режиме, панель инструментов имеет высоту ландшафта, но кнопка «Готово» отображается на половине экрана.Если я затем поверну в портретный режим, кнопка «Готово» будет нарисована в правильном месте, и она останется в правильном месте, когда я вернусь в альбомный режим.
Если я начну редактировать в портретном режиме, панель инструментоврисуется с портретной высотой, но кнопка «Готово» отображается в правильном месте.Если я затем поверну в альбомный режим, панель инструментов останется портретной высотой, но кнопка «Готово» по-прежнему будет отображаться, по крайней мере, в правильном положении.
Есть предложения, как изменить размер при вращении устройства?Я действительно надеюсь, что есть более автоматический способ, чем ручное включение магических чисел высоты в одном из событий вращения контроллера представления.