Клавиатура Dimiss при редактировании текстового поля в UIWebview - PullRequest
2 голосов
/ 02 февраля 2012

Я открываю веб-страницу в UIWebview, и на этой странице есть текстовое поле и виртуальная клавиатура для ввода пароля. Но при редактировании текстового поля iPhone появляется виртуальная клавиатура. Я хотел отклонить клавиатуру iPhone и в то же время продолжить редактирование текстового поля. Я попробовал следующее, но это не сработало.

[webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur()"];

А также попытался зарегистрироваться для уведомления о клавиатуре, чтобы я мог затемнить клавиатуру, но не удалось. Буду признателен за любые идеи о том, как этого добиться. Заранее спасибо.

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



-(void) keyboardDidShow: (NSNotification *)notif 
{
// I want to dismiss the keyboard 
}

Ответы [ 4 ]

7 голосов
/ 02 февраля 2012

попробуйте

[webView endEditing:YES]

Вы также можете попробовать эту ссылку, если вышеуказанное решение не работает - Скрыть клавиатуру в UIwebView

2 голосов
/ 02 февраля 2012

Добавьте метод, который пройдет через все подпредставления веб-просмотра и уйдет в отставку первого респондента

     -(BOOL)resignFirstResponderAction:(UIView *)view{
        if (view.isFirstResponder){
            [view resignFirstResponder];
            return YES;
        }
        
        for (UIView *subView in view.subviews) {
            if ([self resignFirstResponderAction:subView]){
                return YES;
            }
        }
        return NO;
     }

, затем просто вызовите этот метод с веб-просмотром:

     [self resignFirstResponderAction:webView];

Редактировать

кажется, есть гораздо более простое решение:

[webView endEditing:YES]

Я оставляю исходный ответ, так как в некоторых случаях это может помочь

0 голосов
/ 02 февраля 2012

Вам нужно добавить следующую категорию UIView в ваш код
И метод выше для вашей реализации Добавьте следующий код в ваш файл .m перед @ реализацией

@implementation UIView (FindFirstResponder)

- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {        
        return self;     
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResponder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end


-(void)hideWebViewFirstResponser{
    UIView *firstResponderOwner=[webView findFirstResponder];
    if(firstResponderOwner) {
        [firstResponderOwner resignFirstResponder];
    }
}
0 голосов
/ 02 февраля 2012

Вы можете использовать javascript, чтобы отвести фокус от html-элемента, когда на него нажимают так:

 <input type="text" onClick="document.getElementById('myInput').blur();" id="myInput"/>
...