我需要在按钮上单击UIButton打开键盘(不使用/用于UITextField)。我试图通过覆盖变量canBecomeFirstResponder
来创建自定义按钮,但它不起作用。
还有其他方法吗?
注意:我想将UIPIckerView设置为键盘框架中UIButton的输入视图。
这是我的代码。
class RespondingButton: UIButton {
override var canBecomeFirstResponder: Bool {
return true
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit() {
// common init
}
}
在我的视图控制器中,我连接了按钮操作。
class TestViewController: UIViewController {
@IBAction func testBecomeFirstResponder(button: RespondingButton){
button.becomeFirstResponder() // Not working.
}
}
答案 0 :(得分:2)
像这样添加UIKeyInput的一致性。它应该工作。
class RespondingButton: UIButton, UIKeyInput {
override var canBecomeFirstResponder: Bool {
return true
}
var hasText: Bool = true
func insertText(_ text: String) {}
func deleteBackward() {}
}
答案 1 :(得分:2)
这就是我要做的事。
textField
1x1px,假设它是myTextField
。myTextField.becomeFirstResponder()
。 创建视图:
let pvBackground: UIView = {
let v = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
v.backgroundColor = .white
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
在viewDidLoad
:
pvBackground.addSubview(yourPickerView)//add the picker into the pvBackground
myTextField.inputView = pvBackground
我将pickerView
添加到另一个视图中,以便能够对其进行更多自定义。