Ios textfields inputAccessoryView我的自定义pickerview带工具栏-swift
我有一个定制的pickerview,并连接两个文本字段Ios textfields inputAccessoryView我的自定义pickerview带工具栏-swift,ios,iphone,swift,uipickerview,Ios,Iphone,Swift,Uipickerview,我有一个定制的pickerview,并连接两个文本字段 但我对我的pickerview有些疑问。 pickerview有一个工具栏和两个按钮(完成和取消)。单击文本字段1时。“完成”和“取消”没有操作。 然后单击文本字段2。“完成”和“取消”也没有操作。 最后,我返回单击文本字段1。按钮调用我的取消和完成功能成功。 我想问我应该怎么做,让我的按钮在第一次点击时工作 这是自定义pickerview中的代码: import UIKit import SnapKit class PickerView
但我对我的pickerview有些疑问。
pickerview有一个工具栏和两个按钮(完成和取消)。
单击文本字段1时。“完成”和“取消”没有操作。
然后单击文本字段2。“完成”和“取消”也没有操作。
最后,我返回单击文本字段1。按钮调用我的取消和完成功能成功。
我想问我应该怎么做,让我的按钮在第一次点击时工作 这是自定义pickerview中的代码:
import UIKit
import SnapKit
class PickerView: UIView {
var toolbar:UIToolbar = UIToolbar()
var picker :UIPickerView = UIPickerView()
var done :UIBarButtonItem = UIBarButtonItem()
var cancel :UIBarButtonItem = UIBarButtonItem()
override init(frame: CGRect) {
super.init(frame:frame)
translatesAutoresizingMaskIntoConstraints = false
loadContent()
}
func loadContent() {
toolbar.sizeToFit()
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
toolbar.items = [cancel,flexSpace,done]
addSubview(toolbar)
addSubview(picker)
}
}
视图控制器
import UIKit
class ViewController: UIViewController , UIPickerViewDelegate , UIPickerViewDataSource {
var textField1:UITextField = UITextField()
var textField2:UITextField = UITextField()
var pick1:PickerView = PickerView()
var pick2:PickerView = PickerView()
override func loadView() {
super.loadView()
loadElement()
}
func loadElement() {
view.addSubview(textField1)
view.addSubview(textField2)
}
override func viewDidLoad() {
super.viewDidLoad()
pick1.picker.delegate = self
pick1.picker.dataSource = self
pick2.picker.delegate = self
pick2.picker.dataSource = self
textField1.inputView = pick1.picker
textField1.inputAccessoryView = pick1.toolbar
textField2.inputView = pick2.picker
textField2.inputAccessoryView = pick2.toolbar
//pickerview setting
pick1.picker.showsSelectionIndicator = true
pick1.picker.tag = 0
pick1.done.action = #selector(done1Clicked)
pick1.cancel.action = #selector(cancel1Clicked)
pick2.picker.showsSelectionIndicator = true
pick2.picker.tag = 1
pick2.done.action = #selector(done2Clicked)
pick2.cancel.action = #selector(cancel2Clicked)
}
//don't call these functions !!!!!!
func cancel1Clicked(sender:UIBarButtonItem) {
textField1.resignFirstResponder()
}
func done1Clicked(sender:UIBarButtonItem) {
textField1.resignFirstResponder()
}
func cancel2Clicked(sender:UIBarButtonItem) {
textField2.resignFirstResponder()
}
func done2Clicked(sender:UIBarButtonItem) {
textField2.resignFirstResponder()
}
}
您从未在这两个按钮上设置
目标
,只有操作
。感谢您的建议,这是有效的。