Удалите кнопки "Следующая / Предыдущая" (inputAccessoryView) для пользовательской клавиатуры в iOS8 WebView

Пожалуйста, потерпите меня, я много искал в Интернете и не смог найти решение, так как это новый API.

Я пытаюсь создать пользовательскую клавиатуру для iOS 8. Она отлично работает, за исключением WebView! Имеет кнопку "предыдущий-следующий", которая находится в inputAccessoryView, Я знаю, что это свойство доступно только для чтения для веб-просмотра, но поскольку iOS 8 позволяет пользователям иметь собственную клавиатуру, я предполагаю, что это представление должно быть где-то редактируемым. Кто-нибудь сталкивался с той же проблемой? Любая помощь будет оценена.

2 ответа

Вы можете попробовать и улучшить это. попробуйте вызвать эту функцию внутри вашего обработчика событий UIKeyboardDidShowNotification.

-(void) removeKeyboard {
    UIWindow *keyboardWindow = nil;
    for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
        if (![[testWindow class] isEqual : [UIWindow class]]) {
            keyboardWindow = testWindow;
            break;
        }
    }
    // Locate UIWebFormView.
    for (UIView *possibleFormView in [keyboardWindow subviews]) {

        if ([[possibleFormView description] hasPrefix : @"<UIInputSetContainerView"]) {
            for (UIView* peripheralView in possibleFormView.subviews) {

                for (UIView* peripheralView_sub in peripheralView.subviews) {


                    // hides the backdrop (iOS 8)
                    if ([[peripheralView_sub description] hasPrefix : @"<UIKBInputBackdropView"] && peripheralView_sub.frame.size.height == 44) {
                        [[peripheralView_sub layer] setOpacity : 0.0];

                    }
                    // hides the accessory bar
                    if ([[peripheralView_sub description] hasPrefix : @"<UIWebFormAccessory"]) {


                        for (UIView* UIInputViewContent_sub in peripheralView_sub.subviews) {

                            CGRect frame1 = UIInputViewContent_sub.frame;
                            frame1.size.height = 0;
                            peripheralView_sub.frame = frame1;
                            UIInputViewContent_sub.frame = frame1;
                            [[peripheralView_sub layer] setOpacity : 0.0];

                        }

                        CGRect viewBounds = peripheralView_sub.frame;
                        viewBounds.size.height = 0;
                        peripheralView_sub.frame = viewBounds;

                    }
                }

            }
        }
    }

}

Надеюсь это поможет...

Это уровень просмотров в аксессуаре:

(UIWebFormAccessory) -> (UIToolbar) -> (UIImageView, UIToolbarButton, UIToolbarButton)



Снятие или масштабирование до нулевой высоты вспомогательной планки приведет к появлению черной области. Вы можете играть вокруг рамки или границ основного вида. или если вы просто хотите избавиться от кнопок, просто попробуйте установить непрозрачность 0 на кнопку UITool, кнопка на панели инструментов находится внутри панели uitoolbar.

Используйте это, это работает как очарование, и это намного чище, чем другие решения. Это взлом с помощью inputAccessoryView для UIWebBrowserView (внутренний UIWebView).

Удачи с кодированием!

Другие вопросы по тегам