Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-UIButton成为打开键盘的第一反应器_Ios_Swift_Uibutton_Becomefirstresponder - Fatal编程技术网

iOS-UIButton成为打开键盘的第一反应器

iOS-UIButton成为打开键盘的第一反应器,ios,swift,uibutton,becomefirstresponder,Ios,Swift,Uibutton,Becomefirstresponder,我需要打开键盘上的按钮点击UIButton(不使用/for UITextField)。我试图通过重写变量canBecomeFirstResponder来创建自定义按钮,但它不起作用 还有其他办法吗 注意:我想将UIPIckerView设置为键盘框架中UIButton的输入视图 这是我的密码 class RespondingButton: UIButton { override var canBecomeFirstResponder: Bool { return tru

我需要打开键盘上的按钮点击UIButton(不使用/for 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.
   } 
}

像这样向UIKeyInput添加一致性。它应该会起作用

class RespondingButton: UIButton, UIKeyInput {

    override var canBecomeFirstResponder: Bool {
        return true
    }

    var hasText: Bool = true
    func insertText(_ text: String) {}
    func deleteBackward() {}
}

像这样向UIKeyInput添加一致性。它应该会起作用

class RespondingButton: UIButton, UIKeyInput {

    override var canBecomeFirstResponder: Bool {
        return true
    }

    var hasText: Bool = true
    func insertText(_ text: String) {}
    func deleteBackward() {}
}

这就是我要做的

  • 创建透明的
    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
    添加到另一个视图中,以便能够对其进行更多自定义。

    下面是我要做的

  • 创建透明的
    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
    ,以便能够对其进行更多自定义。

    您想用键盘更改UIPicker显示的数据吗?@Phyber您可能知道,我们可以将UIPickerView设置为UIExtField的inputView,类似的方式,我需要使用UIButton来完成,可能这是weired,但隐藏文本字段并将其设置为first responder(第一响应者)又有什么意义呢?@Retterdesdialogs,我有这个选择,但这将是我使其工作的最后一个选择。你想用键盘更改UIPicker显示的数据吗?@Phyber你可能知道,我们可以将UIPickerView设置为UIExtField的inputView,就像这样,我需要使用UIButton来完成它可能的重复,也许这很奇怪,但隐藏的textfield是什么,并将其设置为first responder-如果没有其他东西对您有效。@RetterDeDialogs,我有这个选择,但这将是我最后一个让它工作的选择。部分意味着?部分意味着?