Ответ 1
Меня тоже преследовали такие же проблемы.
моя проблема решена простым одним css-свойством, которое -webkit-user-select:none
Я повторно решил это, и все работает отлично.
попробуйте это.
Итак, я видел много потоков о проблеме iOS, сосредоточившись на элементе input/textarea. (См. здесь и здесь). Кажется, что iOS не позволит вам вручную сосредоточиться на одном из этих элементов, и требует, чтобы он был подлинным нажатием/щелчком, чтобы сфокусироваться на элементе.
Я попытался имитировать щелчок, нажав кнопку мыши, просто нажав() сразу... всевозможные вещи.
Вот мое текущее обходное решение, которое я пытаюсь реализовать:
$scope.gotoElement = function(eID) {
// call $anchorScroll()
$scope.smoothScrollTo(eID).then(function() {
clickElement('#textarea');
});
}
function clickElement(e) {
$(e).on('touchstart', function() {
//$(e).val('touchstart');
$(e).focus();
});
$(e).trigger('touchstart');
}
Вам не нужно беспокоиться о функции прокрутки, я знаю, что это работает, и я достаточно проверил это. Прокомментированный $(e).val('touchstart')
работает без проблем для изменения текста текстового поля, но .focus()
не работает в iOS. Я тестировал это на устройстве Android, и он отлично работает, но на iOS он просто не поднимает клавиатуру. Иногда он начинает поднимать клавиатуру на полсекунды, а затем снова исчезает.
Я рассмотрел другие темы, как я уже говорил выше, и я не могу понять, как написать обходной путь для этого.
Любые идеи?
Меня тоже преследовали такие же проблемы.
моя проблема решена простым одним css-свойством, которое -webkit-user-select:none
Я повторно решил это, и все работает отлично.
попробуйте это.
На UIWebView
установите keyboardDisplayRequiresUserAction
на NO
.
Я использовал iPad Air [iOS 7.0.4], iPad Mini [iOS 7.1] и jQuery [1.11.3] для моего теста.
Событие .focus отлично работало как для полей ввода, так и для textarea.
Я вставляю код ниже, с которым я тестировал. Пожалуйста, дайте мне знать, если я ничего не пропущу.
Это для какой-то предыдущей версии iOS/jQuery?
Мой HTML,
<body>
<!--<input id="in" type="text"/>-->
<textarea id="in"></textarea>
<button id="btn">Add Focus</button>
</body>
Мой запрос,
$('#btn').click(function(){
$('#in').focus();
})
Версия WKWebView keyboardDisplayRequiresUserAction = NO
из thedyrt/cordova-plugin-wkwebview-engine:
#import <objc/runtime.h>
- (void) viewDidLoad {
...
SEL sel = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:userObject:");
Class WKContentView = NSClassFromString(@"WKContentView");
Method method = class_getInstanceMethod(WKContentView, sel);
IMP originalImp = method_getImplementation(method);
IMP imp = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2, id arg3) {
((void (*)(id, SEL, void*, BOOL, BOOL, id))originalImp)(me, sel, arg0, TRUE, arg2, arg3);
});
method_setImplementation(method, imp);
}