【发布时间】:2020-06-16 07:30:45
【问题描述】:
基本上,我希望当用户按下电话号码以弹出数字键盘时,我在 Storyboard 中将其设置为与普通键盘相同的名称,当用户想要输入日期时,日期选择器将弹出。
然而,我得到的是三个字段的屏幕底部的这个小弹出窗口。 我做错什么了 ??? 只有日期选择器弹出工作正常,其他两个字段在底部给出这张图片
我的 ViewdidLoad
class SignUp : BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
renderButton()
fullName.delegate = self
birthDate.delegate = self
phoneNumber.delegate = self
}
日期文本字段的我的 DatePicker
@objc func datePickerValueChanged(sender : UIDatePicker) {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.dateFormat = "yyyy-MM-dd"
formatter.timeStyle = .none
birthDate.text! = formatter.string(from: sender.date).formattedDate!
}
以及 UITEXTFIELD 的扩展
extension SignUp : UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == birthDate {
textField.layer.borderColor = UIColor.topaz.cgColor
} else if textField == fullName {
textField.layer.borderColor = UIColor.topaz.cgColor
} else if textField == phoneNumber {
textField.layer.borderColor = UIColor.topaz.cgColor
}
textField.becomeFirstResponder()
}
func textFieldDidEndEditing(_ textField : UITextField) {
if textField == birthDate {
textField.layer.borderColor = UIColor.clear.cgColor
} else if textField == fullName {
textField.layer.borderColor = UIColor.clear.cgColor
} else if textField == phoneNumber {
textField.layer.borderColor = UIColor.clear.cgColor
}
textField.resignFirstResponder()
}
}
【问题讨论】:
-
您正在模拟器中运行,这就是原因。转到模拟器 --> I/O --> 键盘 --> 连接硬件键盘,Command + Shift + K 也可以
-
解决这个问题真的很顺利谢谢你:)
标签: ios swift xcode uitextfield first-responder