Обновлено приложение, которое использовало UIWebView, чтобы вместо него использовать WKWebView. Однако клавиатуру можно заставить оставаться включенной и не отвечать на запросы, выполнив следующие действия:
[*]WKWebView открывается по URL-адресу, имеющему поле ввода. (s) и прикреплен к суперпредставлению.
[*]Поле ввода активировано и отображается клавиатура.
[*]Текст можно вводить с клавиатуры, как и ожидалось. .
[*]Выполняется действие, которое удаляет WKWebView из суперпредставления, пока отображается клавиатура. Клавиатура удаляется, как и ожидалось, вместе с WKWebView.
[*]Откройте новый WKWebView по URL-адресу, который имеет поля ввода и прикреплен к суперпредставлению.
[*]Активируйте поле ввода, и отобразится клавиатура.
[*]Выполняется действие, которое удаляет WKWebView из суперпредставления, пока отображается клавиатура.
< /ul>
На этом этапе клавиатура не исчезнет, и ее нельзя заставить исчезнуть.
Очевидно, что желаемое поведение заключается в том, чтобы клавиатура исчезать каждый раз, когда веб-просмотр закрывается.
Я написал простое небольшое тестовое приложение и могу воспроизвести проблему за пределами сложности приложения.
Каков же приемлемый способ избавиться от WKWebView? Это фрагмент кода того, что у меня не работает, оставляя клавиатуру безжизненной при втором вызове, как будто ее отсоединили и забыли.
[webView stopLoading];
webView.navigationDelegate = nil;
webView.scrollView.delegate = nil;
[webView removeFromSuperview];
webView = nil;
Вот еще один рабочий пример. Я старался сделать это проще и использовал двойное нажатие для добавления/удаления, но кнопка или таймер также работают, чтобы вызвать добавление/удаление веб-просмотра. Я не думаю, что это имеет какое-то значение. Похоже, проблема заключается в удалении WKWebView, когда клавиатура открыта и активна.
- (void)viewDidLoad {
[super viewDidLoad];
webView = nil;
webViewIsActive = FALSE;
tap2Recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
tap2Recognizer.numberOfTouchesRequired = 1;
tap2Recognizer.numberOfTapsRequired = 2;
tap2Recognizer.delegate = self;
[self.view addGestureRecognizer:tap2Recognizer];
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return YES;
}
- (void)handleDoubleTap:(UITapGestureRecognizer *)gestureRecognizer
{
if (webViewIsActive) {
if (keyboardIsVisible) [webView endEditing:true];
else [self removeWebView];
} else [self addWebView];
}
- (void)addWebView {
webView = [[WKWebView alloc] initWithFrame:self.view.frame];
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
webView.allowsBackForwardNavigationGestures = false;
webView.navigationDelegate = self;
// Do any additional setup after loading the view.
NSURL *url = [NSURL URLWithString:@"https://google.com"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[self.view addSubview:webView];
webViewIsActive = TRUE;
}
- (void)removeWebView {
if (webView)
{
[webView stopLoading];
webView.navigationDelegate = nil;
webView.scrollView.delegate = nil;
[webView removeFromSuperview];
webView = nil;
}
webViewIsActive = FALSE;
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... stuck-open
Удаление WKWebView, оставляя клавиатуру открытой ⇐ IOS
Программируем под IOS
-
Anonymous
1712896890
Anonymous
Обновлено приложение, которое использовало UIWebView, чтобы вместо него использовать WKWebView. Однако клавиатуру можно заставить оставаться включенной и не отвечать на запросы, выполнив следующие действия:
[*]WKWebView открывается по URL-адресу, имеющему поле ввода. (s) и прикреплен к суперпредставлению.
[*]Поле ввода активировано и отображается клавиатура.
[*]Текст можно вводить с клавиатуры, как и ожидалось. .
[*]Выполняется действие, которое удаляет WKWebView из суперпредставления, пока отображается клавиатура. Клавиатура удаляется, как и ожидалось, вместе с WKWebView.
[*]Откройте новый WKWebView по URL-адресу, который имеет поля ввода и прикреплен к суперпредставлению.
[*]Активируйте поле ввода, и отобразится клавиатура.
[*]Выполняется действие, которое удаляет WKWebView из суперпредставления, пока отображается клавиатура.
< /ul>
На этом этапе клавиатура не исчезнет, и ее нельзя заставить исчезнуть.
Очевидно, что желаемое поведение заключается в том, чтобы клавиатура исчезать каждый раз, когда веб-просмотр закрывается.
Я написал простое небольшое тестовое приложение и могу воспроизвести проблему за пределами сложности приложения.
Каков же приемлемый способ избавиться от WKWebView? Это фрагмент кода того, что у меня [b]не[/b] работает, оставляя клавиатуру безжизненной при втором вызове, как будто ее отсоединили и забыли.
[webView stopLoading];
webView.navigationDelegate = nil;
webView.scrollView.delegate = nil;
[webView removeFromSuperview];
webView = nil;
Вот еще один рабочий пример. Я старался сделать это проще и использовал двойное нажатие для добавления/удаления, но кнопка или таймер также работают, чтобы вызвать добавление/удаление веб-просмотра. Я не думаю, что это имеет какое-то значение. Похоже, проблема заключается в удалении WKWebView, когда клавиатура открыта и активна.
- (void)viewDidLoad {
[super viewDidLoad];
webView = nil;
webViewIsActive = FALSE;
tap2Recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
tap2Recognizer.numberOfTouchesRequired = 1;
tap2Recognizer.numberOfTapsRequired = 2;
tap2Recognizer.delegate = self;
[self.view addGestureRecognizer:tap2Recognizer];
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return YES;
}
- (void)handleDoubleTap:(UITapGestureRecognizer *)gestureRecognizer
{
if (webViewIsActive) {
if (keyboardIsVisible) [webView endEditing:true];
else [self removeWebView];
} else [self addWebView];
}
- (void)addWebView {
webView = [[WKWebView alloc] initWithFrame:self.view.frame];
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
webView.allowsBackForwardNavigationGestures = false;
webView.navigationDelegate = self;
// Do any additional setup after loading the view.
NSURL *url = [NSURL URLWithString:@"https://google.com"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[self.view addSubview:webView];
webViewIsActive = TRUE;
}
- (void)removeWebView {
if (webView)
{
[webView stopLoading];
webView.navigationDelegate = nil;
webView.scrollView.delegate = nil;
[webView removeFromSuperview];
webView = nil;
}
webViewIsActive = FALSE;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78307909/removing-wkwebview-leaving-keyboard-stuck-open[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия