如何隐藏 .numberPad 键盘上的字母?

Cyk*_*ero 5 iphone keyboard uikit ios

默认情况下,当使用.numberPad在 iPhone 上使用键盘时,数字键的底部还带有字母。

\n\n

在此输入图像描述

\n\n

这些字母纯粹是装饰性的,可以帮助人们输入数字;但就我而言(输入物品数量),它们\xe2\x80\x99完全是多余的,甚至可能令人困惑。

\n\n

是否可以配置键盘来隐藏这些字母?\n我是否应该实现自己的键盘视图以正确显示按键?

\n

Rob*_*Rob 4

我不相信\xe2\x80\x99t 相信目前有一个\xe2\x80\x9cdigit only\xe2\x80\x9d 键盘,没有文本字符。

\n\n

但您可以创建自己的:

\n\n
textField.inputView = NumericKeyboard(target: textField)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在哪里

\n\n
class DigitButton: UIButton {\n    var digit: Int = 0\n}\n\nclass NumericKeyboard: UIView {\n    weak var target: UIKeyInput?\n\n    var numericButtons: [DigitButton] = (0...9).map {\n        let button = DigitButton(type: .system)\n        button.digit = $0\n        button.setTitle("\\($0)", for: .normal)\n        button.titleLabel?.font = UIFont.preferredFont(forTextStyle: .largeTitle)\n        button.setTitleColor(.black, for: .normal)\n        button.layer.borderWidth = 0.5\n        button.layer.borderColor = UIColor.darkGray.cgColor\n        button.accessibilityTraits = [.keyboardKey]\n        button.addTarget(self, action: #selector(didTapDigitButton(_:)), for: .touchUpInside)\n        return button\n    }\n\n    var deleteButton: UIButton = {\n        let button = UIButton(type: .system)\n        button.setTitle("\xe2\x8c\xab", for: .normal)\n        button.titleLabel?.font = UIFont.preferredFont(forTextStyle: .largeTitle)\n        button.setTitleColor(.black, for: .normal)\n        button.layer.borderWidth = 0.5\n        button.layer.borderColor = UIColor.darkGray.cgColor\n        button.accessibilityTraits = [.keyboardKey]\n        button.accessibilityLabel = "Delete"\n        button.addTarget(self, action: #selector(didTapDeleteButton(_:)), for: .touchUpInside)\n        return button\n    }()\n\n    init(target: UIKeyInput) {\n        self.target = target\n        super.init(frame: .zero)\n        configure()\n    }\n\n    required init?(coder: NSCoder) {\n        fatalError("init(coder:) has not been implemented")\n    }\n}\n\n// MARK: - Actions\n\nextension NumericKeyboard {\n    @objc func didTapDigitButton(_ sender: DigitButton) {\n        target?.insertText("\\(sender.digit)")\n    }\n\n    @objc func didTapDeleteButton(_ sender: DigitButton) {\n        target?.deleteBackward()\n    }\n}\n\n// MARK: - Private initial configuration methods\n\nprivate extension NumericKeyboard {\n    func configure() {\n        autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        addButtons()\n    }\n\n    func addButtons() {\n        let stackView = createStackView(axis: .vertical)\n        stackView.frame = bounds\n        stackView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        addSubview(stackView)\n\n        for row in 0 ..< 3 {\n            let subStackView = createStackView(axis: .horizontal)\n            stackView.addArrangedSubview(subStackView)\n\n            for column in 0 ..< 3 {\n                subStackView.addArrangedSubview(numericButtons[row * 3 + column + 1])\n            }\n        }\n\n        let subStackView = createStackView(axis: .horizontal)\n        stackView.addArrangedSubview(subStackView)\n\n        let blank = UIView()\n        blank.layer.borderWidth = 0.5\n        blank.layer.borderColor = UIColor.darkGray.cgColor\n\n        subStackView.addArrangedSubview(blank)\n        subStackView.addArrangedSubview(numericButtons[0])\n        subStackView.addArrangedSubview(deleteButton)\n    }\n\n    func createStackView(axis: NSLayoutConstraint.Axis) -> UIStackView {\n        let stackView = UIStackView()\n        stackView.axis = axis\n        stackView.alignment = .fill\n        stackView.distribution = .fillEqually\n        return stackView\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

得出:

\n\n

在此输入图像描述

\n\n

显然,您可以疯狂地将键盘自定义为您想要的外观。\xe2\x80\x99d。上面的内容相当原始,是我刚刚拼凑起来的。但它说明了这个想法:让你拥有自己的输入视图并使用UIKeyInput协议将键盘输入传递给控件。

\n