我不相信\xe2\x80\x99t 相信目前有一个\xe2\x80\x9cdigit only\xe2\x80\x9d 键盘,没有文本字符。
\n\n但您可以创建自己的:
\n\ntextField.inputView = NumericKeyboard(target: textField)\nRun Code Online (Sandbox Code Playgroud)\n\n在哪里
\n\nclass 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}\nRun Code Online (Sandbox Code Playgroud)\n\n得出:
\n\n\n\n显然,您可以疯狂地将键盘自定义为您想要的外观。\xe2\x80\x99d。上面的内容相当原始,是我刚刚拼凑起来的。但它说明了这个想法:让你拥有自己的输入视图并使用UIKeyInput协议将键盘输入传递给控件。
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |