Во-первых, готовые коды кнопок ниже
class ViewController: UIViewController, UITextFieldDelegate {
let inputNumber = UITextField(frame: CGRect(x: 150.0, y: 100.0, width: 200.0, height: 50.0))
let toolBarKeyBoard = UIToolbar()
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
var result : String!
override func viewDidLoad() {
super.viewDidLoad()
calculatePrice()
}
func calculatePrice () {
priceInputLabel.keyboardType = .numberPad
priceInputLabel.clearButtonMode = .whileEditing
self.view.addSubview(priceInputLabel)
toolBarKeyBoard.sizeToFit()
toolBarKeyBoard.setItems([flexibleSpace, doneButton], animated: false)
priceInputLabel.inputAccessoryView = toolBarKeyBoard
}
@objc func donePressed() {
view.endEditing(true)
}
}
Работает нормально. Когда я нажимаю «inputNumber (UITextField)», появляется клавиатура. И когда я ввожу номер и нажимаю кнопку «Готово», клавиатура закрывается. Хорошо.
Но в других кодах внизу не работает.
class FruitTableViewCell: UITableViewCell, UITextFieldDelegate {
var fruitsTextField = UITextField()
let toolBarKeyBoard = UIToolbar()
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
var result : String!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.contentView.addSubview(fruitsTextField)
}
override func layoutSubviews() {
super.layoutSubviews()
fruitsTextField.frame = CGRect(x: 250, y: 7.5, width: 100, height: 30)
fruitsTextField.textColor = UIColor(red: CGFloat(242/255.0), green: CGFloat(56/255.0), blue: CGFloat(90/255.0), alpha: 1.0)
fruitsTextField.keyboardType = .numberPad
fruitsTextField.clearButtonMode = .whileEditing
toolBarKeyBoard.sizeToFit()
fruitsTextField.inputAccessoryView = toolBarKeyBoard
toolBarKeyBoard.setItems([flexibleSpace, doneButton], animated: false)
}
@objc func donePressed() {
fruitTextField.endEditing(true)
}
Я могу построить, я могу переключать клавиатуру, я могу касаться кнопки «Готово», но клавиатура не сбрасывается.
Я думаю, что функция '@objc func donePressed ()' в нижней строке имеет значение.
Первые коды: «view.endEditing (true)», но это «fruitTextField.endEditing (true)»
Итак, я попытался изменить коды.
@objc func donePressed() {
contentView.endEditing(true)
}
Но не работает.
Question1. Как я могу отклонить клавиатуру?
Вопрос2. Почему клавиатура не отключается, даже если я коснулся кнопки «Готово»?
Question3. Во втором коде клавиатура не является FirstResponder?
Вопрос4. Во втором коде, что такое представление для .endEditing?
Спасибо!