Mam dziwny problem z moją aplikacją zbudowaną w Ionic 1.3.2, która dzieje się tylko w systemie iOS.Klawiatura otwiera się po kliknięciu pustego miejsca.
Kiedy klikam na wejście tekstowe, klawiatura otwiera się jak zwykle, ta część działa zgodnie z oczekiwaniami, a element input
zostaje wyostrzony.
Jednak po kliknięciu niektórych obszarów ekranu poza dowolnymi danymi wejściowymi, np. O 20 pikseli poniżej pola tekstowego, które posiadam, klawiatura opsn lub zamyka się i ponownie otwiera natychmiast, jeśli jest już otwarta, ale numer input
't get focus i document.activeElement
faktycznie zwraca element body (zaznaczony w inspektorze Safari).
Tak więc w tym trybie mogę wpisać cokolwiek chcę, ale wprowadzony tekst nie pojawia się nigdzie, tak jakbym pisał nigdzie (co jest trochę dziwne).
Ponadto, jeśli kliknę 2-3 razy w jednym z tych miejsc, całe awarii aplikacji z EXC_BAD_ACCESS
wewnątrz niektórych UIWebView
wewnętrzne:
* 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
ktoś wie jak rozwiązać ten problem?
Używam jonów 1.3.2. To nie wydaje się być problemem z wtyczką Ionic Keyboard, bo to samo dzieje się, nawet jeśli ją usunę.
Edit (Jak odtworzyć):
Oto sample project że można użyć do odtworzenia tego problemu (KeyboardBugRepro.zip). Będziesz musiał wykonać następujące czynności, aby uruchomić go po wyodrębnieniu archiwum:
- Zainstaluj Node.js. Jeśli używasz Hombrew uruchomić
brew install node
- Install jonowych i Cordova globalnie z KMP:
npm install -g ionic cordova
- jeśli mogą być konieczne do uruchomienia „jonowy przygotować” przed uruchomieniem projektu, ale można przejść do następnego kroku początkowo i sprawdzić, czy to działa.
- Uruchom
ionic emulate ios
. Spowoduje to uruchomienie symulatora iPhone SE i uruchomienie aplikacji. - Upewnij się, że wyłączona została klawiatura sprzętowa w opcjach symulatora (Sprzęt -> Klawiatura> odznacz Podłącz klawiaturę sprzętową).
Po uruchomieniu aplikacji pojawi się ekran logowania. Teraz kliknij gdzieś nieco poniżej wprowadzonego hasła i obserwuj, jak klawiatura oprogramowania otwiera się, ale wejście nie jest skupione. Ale jeśli klikniesz bezpośrednio na dane wejściowe, zostanie ono skupione. Kliknięcie pustego miejsca spowoduje zamknięcie klawiatury.
Aby odtworzyć awarię wystarczy zrobić to samo wiele razy z rzędu bardzo szybko, zwykle wystarczy 2-3 kliknięcia.
Aby uruchomić projekt z Xcode, wystarczy otworzyć projekt wygenerowany przez ionic w <project>/platforms/ios/KeyboardBug.xcodeproj
i nacisnąć Uruchom.
wygląda jak ios i błąd przeglądarki. Czy wypróbowałeś rozwiązanie wymienione tutaj - https://github.com/driftyco/ionic-plugin-keyboard/issues/217 – Gandhi
czy miałeś okazję to sprawdzić? – Gandhi
@Gandhi Myślę, że to inny błąd. Dodam link do postu z krokami do odtworzenia tego, możesz spojrzeć, jeśli chcesz. Złożyłem także raport o błędzie do Apple przeciwko Safari i zasadniczo wysłałem dzisiaj ten sam kod. Zaktualizuję post, gdy usłyszę od nich. – iosdude