Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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 Textfileld带有uibar,用于关闭键盘垫_Ios_Swift_Xcode_Textfield - Fatal编程技术网

Ios Textfileld带有uibar,用于关闭键盘垫

Ios Textfileld带有uibar,用于关闭键盘垫,ios,swift,xcode,textfield,Ios,Swift,Xcode,Textfield,我创建了一个应用程序表单,在某些字段中我使用数字键盘。由于缺少关闭按钮,我进入了包含关闭按钮的uibar 我目前为每个字段创建一个uibar,因为我必须指定目标。是否可以只创建一个具有多个目标的uibar @IBOutlet weak var TXTNome: UITextField! @IBOutlet weak var TXTAltezza: UITextField! @IBOutlet weak var TXTPeso: UITextField! @IBOutlet weak var TX

我创建了一个应用程序表单,在某些字段中我使用数字键盘。由于缺少关闭按钮,我进入了包含关闭按钮的uibar

我目前为每个字段创建一个uibar,因为我必须指定目标。是否可以只创建一个具有多个目标的uibar

@IBOutlet weak var TXTNome: UITextField!
@IBOutlet weak var TXTAltezza: UITextField!
@IBOutlet weak var TXTPeso: UITextField!
@IBOutlet weak var TXTEta: UITextField!

// Altezza
    let keyboardToolbar = UIToolbar(frame: CGRect(x: 0, y: 0,
                                                  width: self.view.bounds.size.width,
                                                  height: 44))
    keyboardToolbar.barStyle = UIBarStyle.blackTranslucent
    keyboardToolbar.backgroundColor = UIColor.red
    keyboardToolbar.tintColor = UIColor.white

    let flex = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let save = UIBarButtonItem(title: "Chiudi",
                               style: .done,
                               target: TXTAltezza,
                               action: #selector(resignFirstResponder))
    keyboardToolbar.setItems([flex, save], animated: false)
    TXTAltezza.inputAccessoryView = keyboardToolbar

    // Peso
    let keyboardToolbar2 = UIToolbar(frame: CGRect(x: 0, y: 0,
                                                   width: self.view.bounds.size.width,
                                                   height: 44))
    keyboardToolbar2.barStyle = UIBarStyle.blackTranslucent
    keyboardToolbar2.backgroundColor = UIColor.red
    keyboardToolbar2.tintColor = UIColor.white

    let flex2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let save2 = UIBarButtonItem(title: "Chiudi",
                                style: .done,
                                target: TXTPeso,
                                action: #selector(resignFirstResponder))
    keyboardToolbar2.setItems([flex2, save2], animated: false)
    TXTPeso.inputAccessoryView = keyboardToolbar2
等等

var keyConstTextField : UInt = 0
extension UIToolbar {

func addToolBar(_ vc : UIViewController,textFiled : UITextField) -> UIToolbar {

    let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 44))

    toolBar.isTranslucent = true
    let button = UIButton(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 44))
    button.setTitle("DONE", for: .normal)
    button.titleLabel?.font = UIFont(name: "OpenSans-Semibold", size: 17.0)
    button.addTarget(vc, action: #selector(UIViewController.toolBarDoneButtonPressed(_:)), for: .touchUpInside)
    button.backgroundColor = .white
    button.titleLabel?.textColor = UIColor.black

    let done = UIBarButtonItem(customView: button)
    let fixSpace1 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
    let fixSpace2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

    objc_setAssociatedObject(button, &keyConstTextField, textFiled, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)


    toolBar.setItems([fixSpace1,done,fixSpace2], animated: false)
    return toolBar
}

}

extension UIViewController {

//TODO:- To get textfield on specific in below override. You have to fetch from OBJC using keyConstTextField key.
@objc func toolBarDoneButtonPressed(_ sender : UIButton) {

    self.view.endEditing(true)

    if let textField = objc_getAssociatedObject(sender, &keyConstTextField) as? UITextField {
        print(textField.text ?? "Not Found....")
    }
}
}

使用上述方法,您可以使用
UIViewController
扩展定义常见操作


我认为您所要做的就是将target添加到
self
,并使用视图控制器中的选择器。
        let toolBar = UIToolbar()
        toolBar.barStyle = UIBarStyle.default
        toolBar.isTranslucent = true
        toolBar.sizeToFit()
        let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(doneClickOk))
        toolBar.setItems([doneButton], animated: false)
        toolBar.isUserInteractionEnabled = true
        yourTextField.inputAccessoryView = toolBar
        yourOthersTextfields.inputAccessoryView = toolBar


**Than call selector method** 

@objc func doneClickOk(){
    view.endEditing(true)
}