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

iOS: Sometimes soft keyboard can't be closed

    XMLWordPrintable

Details

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

    Description

      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 

       

       

      Attachments

        For Gerrit Dashboard: QTBUG-119601
        # Subject Branch Project Status CR V

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes