У меня странная проблема с моим приложением, созданным с помощью Ionic 1.3.2, которое происходит только на iOS.Клавиатура открывается после нажатия на пустое место
Когда я нажимаю на ввод текстового поля, клавиатура открывается, как обычно, эта часть работает так, как ожидалось, и элемент input
получает фокус.
Однако, когда я нажимаю на определенные области экрана вне любых входов, например 20px ниже текстового поля, которое у меня есть, клавиатура либо opsn, либо закрывается и снова открывается сразу, если она уже открыта, но input
doesn 't получить фокус, и document.activeElement
фактически возвращает элемент body (проверяется в инспекторе Safari).
Так что в этом режиме я могу напечатать все, что захочу, но введенный текст не появляется нигде, как если бы я печатал в никуда (что немного странно).
Кроме того, если я нажму 2-3 раза в одном из тех мест, весь приложение падает с EXC_BAD_ACCESS
внутри некоторых UIWebView
внутренностей:
* thread #1: tid = 0x35ea78, 0x000000010c2c3acb libobjc.A.dylib`objc_msgSend + 11, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x000000010c2c3acb libobjc.A.dylib`objc_msgSend + 11
frame #1: 0x000000010ec56024 UIKit`-[UITextInteractionAssistant(UITextInteractionAssistant_Internal) swallowsDoubleTapWithScale:atPoint:] + 264
frame #2: 0x000000010ea4ce75 UIKit`-[UIWebDocumentView shouldSelectionAssistantReceiveDoubleTapAtPoint:forScale:] + 91
frame #3: 0x000000010f1b930a UIKit`_UIWebDoubleTapAtLocation + 369
frame #4: 0x000000010ec3d409 UIKit`-[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 57
frame #5: 0x000000010ec451a8 UIKit`_UIGestureRecognizerSendTargetActions + 109
frame #6: 0x000000010ec42c77 UIKit`_UIGestureRecognizerSendActions + 227
frame #7: 0x000000010ec41f03 UIKit`-[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 891
frame #8: 0x000000010ec2df7e UIKit`_UIGestureEnvironmentUpdate + 1395
frame #9: 0x000000010ec2d9c3 UIKit`-[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 521
frame #10: 0x000000010ec2cba6 UIKit`-[UIGestureEnvironment _updateGesturesForEvent:window:] + 286
frame #11: 0x000000010e772c1d UIKit`-[UIWindow sendEvent:] + 3989
frame #12: 0x000000010e71f9ab UIKit`-[UIApplication sendEvent:] + 371
frame #13: 0x000000010ef0c72d UIKit`__dispatchPreprocessedEventFromEventQueue + 3248
frame #14: 0x000000010ef05463 UIKit`__handleEventQueue + 4879
frame #15: 0x000000010c819761 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
frame #16: 0x000000010c7fe98c CoreFoundation`__CFRunLoopDoSources0 + 556
frame #17: 0x000000010c7fde76 CoreFoundation`__CFRunLoopRun + 918
frame #18: 0x000000010c7fd884 CoreFoundation`CFRunLoopRunSpecific + 420
frame #19: 0x0000000111fc8a6f GraphicsServices`GSEventRunModal + 161
frame #20: 0x000000010e701c68 UIKit`UIApplicationMain + 159
frame #21: 0x000000010aa7bd81 MyApp`main(argc=1, argv=0x00007fff55184680) + 65 at main.m:32
frame #22: 0x000000010e42f68d libdyld.dylib`start + 1
Любой знает, как это исправить?
Я использую Ionic 1.3.2. Это, похоже, не проблема с плагином Ionic Keyboard, потому что то же самое происходит, даже если я удалю его.
Edit (Как воспроизвести):
Вот sample project, что вы можете использовать, чтобы воспроизвести проблему (KeyboardBugRepro.zip). Вам необходимо будет сделать следующее, чтобы запустить его после того, как вы извлекли архив:
- Установить Node.js. Если вы используете Hombrew запустить
brew install node
- Установки ионных и Кордовы во всем мире с НПМ:
npm install -g ionic cordova
- Если может потребоваться для запуска «ионная подготовки» перед запуском проекта, но вы можете перейти к следующему шагу сначала и посмотреть, если оно работает.
- Пробег
ionic emulate ios
. Это запустит симулятор iPhone SE и запустит приложение. - Убедитесь, что вы отключили аппаратную клавиатуру в вариантах симулятора (Оборудование -> Клавиатура> снимите флажок Подключить аппаратную клавиатуру).
Когда приложение запустится, вы увидите экран входа в систему. Теперь нажмите немного ниже ввода пароля и наблюдайте, как открывается клавиатура программного обеспечения, но вход не фокусируется. Но если вы нажимаете на вход напрямую, он фокусируется. Щелчок на пустое место закроет клавиатуру.
Воспроизведение аварии просто делает то же самое несколько раз подряд очень быстро, обычно достаточно 2-3 щелчков.
Для запуска проекта из Xcode просто откройте проект, созданный ионным, в <project>/platforms/ios/KeyboardBug.xcodeproj
и нажмите Run.
выглядит как ошибка ios и webview. Вы пробовали решение, упомянутое здесь - https://github.com/driftycoionion-plugin-keyboard/issues/217 – Gandhi
У вас была возможность проверить это? – Gandhi
@ Gandhi Это другая ошибка, я думаю. Я добавлю ссылку на сообщение с шагами, чтобы воспроизвести это, вы можете взглянуть, если хотите. Я также опубликовал отчет об ошибке Apple против Safari и в основном отправил им тот же код сегодня. Я обновлю сообщение, когда узнаю от них. – iosdude