我是第一位iPhone开发人员。我的问题是,当我尝试根据键盘的高度更改视图的高度时发生错误。我曾经有一种方法。
使用前:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
if (textField == self.walletNameField) {
self.walletPasswordField.becomeFirstResponder()
}
else if (textField == self.walletPasswordField) {
self.confirmField.becomeFirstResponder()
view.frame.origin.y = -100
}
else{
print("return Type ")
view.frame.origin.y = 0
}
return true
}
但这很不舒服,因为不同的设备必须以不同的方式进行操作。
使用后:
@IBOutlet weak var mainText: UILabel!
@IBOutlet weak var usbText: UITextView!
@IBOutlet weak var walletName: UILabel!
@IBOutlet weak var walletNameDetail: UILabel!
@IBOutlet weak var walletNameField: UITextField!
@IBOutlet weak var walletPassword: UILabel!
@IBOutlet weak var walletPasswordDetail: UILabel!
@IBOutlet weak var walletPasswordField: UITextField!
@IBOutlet weak var passwordConfirm: UILabel!
@IBOutlet weak var confirmField: UITextField!
@IBOutlet weak var confirmConstant: NSLayoutConstraint!
@IBOutlet weak var nextButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
changeViewFont()
walletNameField.delegate = self
walletPasswordField.delegate = self
confirmField.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
if (textField == self.walletNameField) {
self.walletPasswordField.becomeFirstResponder()
}
else if (textField == self.walletPasswordField) {
self.confirmField.becomeFirstResponder()
// view.frame.origin.y = -100
}
else{
print("return Type ")
// view.frame.origin.y = 0
}
return true
}
func adjustingHeight(_ show:Bool, notification:Notification) {
// 1
var userInfo = notification.userInfo!
// 2
let keyboardFrame:CGRect = (userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
// 3
let animationDurarion = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
// 4
let changeInHeight = (keyboardFrame.height + 40) * (show ? 1 : -1)
//5
UIView.animate(withDuration: animationDurarion, animations: { () -> Void in
self.confirmConstant.constant += changeInHeight
})
}
@objc func keyboardWillChange(notification: Notification) {
print("Keyboard show: \(notification.name.rawValue)")
adjustingHeight(false, notification: notification )
}
但是,一旦您触摸三个文本字段中的任何一个,这就是一个错误。我做错了什么?
错误是
线程1:信号SIGABRT
预先感谢