How to reliably detect if an external keyboard is connected on iOS 9?

前端 未结 9 724
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 13:05

Previous to iOS 9, the most reliable method of determining whether an external keyboard is connected was to listen for UIKeyboardWillShowNotification and make a

9条回答
  •  鱼传尺愫
    2020-12-02 14:05

    If you make the toolbar irrelevant then the keyboard doesn't show up. Do this by blanking out its left and right groups (at least on iOS 12.4):

    textField.inputAssistantItem.leadingBarButtonGroups = []
    textField.inputAssistantItem.trailingBarButtonGroups = []
    

    ...and in case it helps here is a swifty way to observe:

    // Watch for a soft keyboard to show up
    let observer = NotificationCenter.default.addObserver(forName: UIWindow.keyboardWillShowNotification, object: nil, queue: nil) { notification in
        print("no external keyboard")
    }
    
    // Stop observing shortly after, since the keyboard should have shown by now
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        NotificationCenter.default.removeObserver(observer)
    }
    

提交回复
热议问题