Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-119601

iOS: Sometimes soft keyboard can't be closed

XMLWordPrintable

    • iOS/tvOS/watchOS
    • e51b2d70d (dev), 93ddf8903 (6.7), abcf6dc36 (6.6), 54aa32626 (tqtc/lts-6.5)

      As shown in the attached video, some of our customers reported a strange behavior with TextFields in our app. Every attempt to close the keyboard by either clicking on "done" or also calling Qt.inputMethod.hide(), results in a short hide animation of the keyboard which is interrupted and the keyboard is shown again.
      It can only be hidden by setting the focus to another object.

      The issue was reported on different iPhones, but is not easily reproducible (even on the same hardware). We could only reproduce it on an iPhone 14 at https://www.browserstack.com/ and got the following the following traces:

      When keyboard can't be closed:

       

      // from "(BOOL)resignFirstResponder" in qiostextresponder.mm
      
      self: <QIOSTextInputResponder: 0x2804c6e20> first: <QIOSTextInputResponder: 0x2804c6e20>
      
      <QIOSTextInputResponder: 0x2804c6e20> resigned first responder
      
      //Additional traces
      [UIResponder currentFirstResponder]: <QIOSDesktopManagerView: 0x10aa710c0; frame = (0 0; 390 844); autoresize = W+H; gestureRecognizers = <NSArray: 0x2839934e0>; animations = { AnimateSubLayerTransform=<CASpringAnimation: 0x283744d20>; sublayerTransform=<CASpringAnimation: 0x283747740>; }; layer = <CALayer: 0x283668000>>
      FirstResponderCandidate::currentCandidate(): NSObject(0x0)
      [self nextResponder]: <QUIMetalView: 0x10aabafc0; frame = (0 0; 390 844); gestureRecognizers = <NSArray: 0x28386b2a0>; layer = <CAMetalLayer: 0x28386ad60>; QIOSWindow(0x28158f160, window=WildWindow_QMLTYPE_27(0x2809d4ff0))>
      
      lost first responder, but not clearing focus object 

       

       

      When keyboard is closed properly (on a different device with the same app):

      // from "(BOOL)resignFirstResponder" in qiostextresponder.mm
      
      self: <QIOSTextInputResponder: 0x2804c6e20> first: <QIOSTextInputResponder: 0x2804c6e20>
      
      <QIOSTextInputResponder: 0x283d84320> resigned first responder
      
      //Additional traces  
      [UIResponder currentFirstResponder]: <QUIMetalView: 0x153353440; frame = (0 0; 390 844); gestureRecognizers = <NSArray: 0x2802b63a0>; layer = <CAMetalLayer: 0x2802e1a70>; QIOSWindow(0x282fc2300, window=WildWindow_QMLTYPE_27(0x2833d4960))>
      FirstResponderCandidate::currentCandidate(): NSObject(0x0)
      [self nextResponder]: <QUIMetalView: 0x153353440; frame = (0 0; 390 844); gestureRecognizers = <NSArray: 0x2802b63a0>; layer = <CAMetalLayer: 0x2802e1a70>; QIOSWindow(0x282fc2300, window=WildWindow_QMLTYPE_27(0x2833d4960))>
      
      no keyboard available, clearing focus object 

       

       

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            vestbo Tor Arne Vestbø
            p.heimann Paul Heimann
            Votes:
            3 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes