与酒吧的文本领域关闭键盘垫的

问题描述 投票:0回答:2

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

等等

ios swift xcode textfield
2个回答
0
投票
        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)
}

0
投票
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扩展名定义常用操作。

© www.soinside.com 2019 - 2024. All rights reserved.