Возможно ли создать inputAccessoryView над клавиатурой для полной ширины экрана в режиме разделения?

Возможно ли создать inputAccessoryView над клавиатурой для полной ширины экрана в режиме разделения? Система автоматически изменяет размер, чтобы он соответствовал рамке приложения. Это ошибка в iOS?

    2 Solutions collect form web for “Возможно ли создать inputAccessoryView над клавиатурой для полной ширины экрана в режиме разделения?”

    Вы можете использовать этот метод, чтобы определить, находится ли ваша клавиатура в режиме разделения. Примечание. Для этого вам нужно UITextField/UITextView с не-nil inputAccessoryView (для этого вы можете просто использовать пустой вид).

     NSArray *classPath = @[ @"KeyboardAutomatic", @"KeyboardImpl", @"KeyboardLayoutStar", @"KBKeyplaneView", @"KBSplitImageView" ]; UIView *splitView = textField.inputAccessoryView.superview; for (NSString *className in classPath) { for (UIView *subview in splitView.subviews) { if ([NSStringFromClass([subview class]) rangeOfString:className].location != NSNotFound) { splitView = subview; break; } } } BOOL isSplit = [splitView.subviews count] > 1; 

    Затем вы можете использовать пользовательский inputAccessoryView и редактировать его CGRectFrame зависимости от того, находится ли клавиатура в режиме разделения или нет. Вот хороший пример: https://github.com/bmancini55/iOSExamples-DockedKeyboardView

    Обмен принятым ответом на тот же вопрос Ссылка

    UIKit публикует UIKeyboardWillShowNotification, когда он показывает клавиатуру, и UIKeyboardWillHideNotification, когда он скрывает клавиатуру. Эти уведомления содержат все необходимое для правильной анимации вашего UITextField.

    Допустим, ваш UITextField находится в свойстве, называемом myTextField.

    Во-первых, вам нужно зарегистрироваться для получения уведомлений. Где вы регистрируетесь, зависит от того, какой объект несет ответственность за перемещение myTextField. В моем проекте надзор за полем отвечает, и, поскольку я загружаю свой пользовательский интерфейс из наконечника, я делаю это в awakeFromNib супервизора:

     - (void)awakeFromNib { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHideOrShow:) name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHideOrShow:) name:UIKeyboardWillShowNotification object:nil]; } 

    Если вы используете UIViewController для перемещения поля вокруг, вы, вероятно, захотите сделать это в viewWillAppear: animated :.

    Вы должны отменить регистрацию в своем dealloc или viewWillDisappear: анимированные ::

     - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } 

    Конечно, сложный бит находится в методе keyboardWillHideOrShow:. Сначала я извлекаю параметры анимации из уведомления:

     - (void)keyboardWillHideOrShow:(NSNotification *)note { NSDictionary *userInfo = note.userInfo; NSTimeInterval duration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationCurve curve = [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; CGRect keyboardFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 

    Клавиатура находится в глобальной системе координат. Мне нужно преобразовать фрейм в ту же систему координат, что и myTextField.frame, а myTextField.frame находится в системе координат myTextField.superview:

    CGRect keyboardFrameForTextField = [self.myTextField.superview convertRect : keyboardFrame fromView: nil];

    Затем я вычисляю фрейм, в который хочу, чтобы myTextField переместился. Нижний край нового кадра должен быть равен верхнему краю рамки клавиатуры:

     CGRect newTextFieldFrame = self.myTextField.frame; newTextFieldFrame.origin.y = keyboardFrameForTextField.origin.y - newTextFieldFrame.size.height; 

    Наконец, я анимацию myTextField для его нового фрейма, используя те же параметры анимации, что и клавиатура:

      [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState | curve animations:^{ self.myTextField.frame = newTextFieldFrame; } completion:nil]; } 

    Здесь все собрано:

     - (void)keyboardWillHideOrShow:(NSNotification *)note { NSDictionary *userInfo = note.userInfo; NSTimeInterval duration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationCurve curve = [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; CGRect keyboardFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect keyboardFrameForTextField = [self.myTextField.superview convertRect:keyboardFrame fromView:nil]; CGRect newTextFieldFrame = self.myTextField.frame; newTextFieldFrame.origin.y = keyboardFrameForTextField.origin.y - newTextFieldFrame.size.height; [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState | curve animations:^{ self.myTextField.frame = newTextFieldFrame; } completion:nil]; } 
    Interesting Posts

    In-App Purchase, SKProductsRequest возвращает 0 – Продукты все еще в обзоре

    Iphone: Можно ли скрыть TabBar? (Pre-iOS 8)

    Обходное ограничение по обходному пути ajax – jquery и / или iOS

    Ошибки веб-страницы iOS в отношении данных сотовой связи, но не по Wi-Fi? Недавнее изменение в сотовой сети AT & T?

    Перемещение строк segue в Interface Builder

    Как сохранить массив объектов в NSUserDefault с быстрым?

    выделение uitextview показывает inputAccessoryView

    Вызов функции по имени с помощью dlsym в iOS

    Измените размер и выберите ленту UicollectionViewCell с анимацией

    Получить время UTC и местное время от объекта NSDate

    Почему NSDictionary реализован как кластер классов?

    Swift: ++ устарел – замененный код не работает

    Как сделать принудительное обновление местоположения пользователя?

    Можно ли воспроизводить песню из музыкальной библиотеки iOS с помощью AVAudioEngine?

    UIButton с IB_DESIGNABLE вызывает предупреждение атрибута времени выполнения и не отображается в Interface Builder

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.