そのため、input/textarea要素に焦点を当てたiOSの問題について、多くのスレッドを見てきました。 ( here および here を参照)iOSでは、これらの要素の1つに手動で焦点を合わせることはできず、素子。
私はクリックをシミュレートし、クリックをトリガーし、すぐにclick()を実行しようとしました...あらゆる種類のもの。
実装しようとしている現在の回避策は次のとおりです。
_$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')
は問題なくtextareaのテキストを変更しますが、.focus()
はiOSでは機能しません。 Androidデバイスでこれをテストしましたが、正常に動作しますが、iOSではキーボードが表示されません。0.5秒でキーボードが表示され、その後、再び消えます。
上記のように他のスレッドを見てきましたが、この回避策を書く方法を理解することはできないようです。
何か案は?
私も同じような問題を嫌がらせをしています。私の問題は、-webkit-user-select:none
これを削除し、すべて正常に動作します。これを試してください。
UIWebView
で、keyboardDisplayRequiresUserAction
をNO
に設定します。
テストにはiPad Air [iOS 7.0.4]、iPad Mini [iOS 7.1]、jQuery [1.11.3]を使用しました。
.focusイベントは、入力フィールドとテキストエリアの両方で完璧に機能しました。
私がテストした以下のコードを貼り付けています。何か足りない場合はお知らせください。
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();
})
thedyrt/cordova-plugin-wkwebview-engine :からのkeyboardDisplayRequiresUserAction = NO
のWKWebViewバージョン
#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);
}