Как работать с аппаратной клавиатурой в iOS? - PullRequest
1 голос
/ 07 января 2020

Я делаю простой проект iOS, в котором есть один UITextField, и тестирую его с помощью симуляторов XCode. Также я добавил inputAccessoryView к своему textField (простому UIToolBar с кнопкой «Готово»).

Когда я включаю опцию Connect Hardware Keyboard в настройках оборудования Симулятора и нажимаю на textField, клавиатура не появляется, но появляется панель инструментов (выглядит очень странно - панель инструментов без клавиатуры). В этом случае клавиатура появляется только когда я нажимаю Toggle Software Keyboard (по умолчанию: ⌘ + K). И когда я отключаю опцию Connect Hardware Keyboard, программа работает правильно, клавиатура появляется и исчезает вместе с ее панелью инструментов. Я просто хочу иметь правильное поведение в обоих случаях (например, не показывать панель инструментов с аппаратной клавиатурой).

Какой самый простой способ определить, какая клавиатура в настоящее время используется (программная или аппаратная)?

Вот код:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        let toolBar = UIToolbar(frame: CGRect(origin: .zero, size: .init(width: view.frame.size.width, height: 30)))
        let doneButton = UIBarButtonItem(title: "Done", style: .done
            , target: self, action: #selector(doneButtonAction))
        toolBar.setItems([doneButton], animated: false)
        toolBar.sizeToFit()
        textField.inputAccessoryView = toolBar
    }

    @objc func doneButtonAction() {
        self.view.endEditing(true)
    }
}

1 Ответ

0 голосов
/ 07 января 2020

Это правильное поведение, если я правильно понимаю. Вы хотите видеть UIToolBar, когда вы нажимаете UITextField, потому что у вас может быть более сложная функциональность на кнопке Готово. Конечно, вы не можете использовать эту панель инструментов на своей аппаратной клавиатуре. Поэтому при подключенной аппаратной клавиатуре открывается только панель инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...