swift - 点击我的 textField 或使用 NS 通知使用键盘时,我的视图不断向上移动
问题描述
我有一个堆栈视图,里面有一些 texField 和一个按钮,这用于登录页面
我在视图底部还有一个按钮,用于显示另一个视图控制器,这个按钮工作正常
我已经设置了一个 tapGesture 识别器,如果您点击视图上的任何位置,键盘应该关闭并且视图返回其原始约束,这也可以正常工作
我已经设置了 NS 通知,并且在我的函数 keyboardWillShow 中,当我点击 textField 时,视图会按照我的意愿向上移动
我的问题是当我点击另一个 textField 或者我开始输入视图时再次向上移动我不知道为什么会这样
看起来由于某种原因,每次我点击不同的文本字段或使用键盘时都会调用该函数 我不明白为什么会这样 任何帮助将不胜感激,因为我是新来的
view.addSubview(alreadyHaveAccountButton)
alreadyHaveAccountButton.anchor(top: nil, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 5, paddingRight: 0, width: 0, height: 60)
let stack = UIStackView(arrangedSubviews: [emailTextfield,passwordTextfield,fullNameTextfield,signUpButton])
stack.axis = .vertical
stack.spacing = 20
stack.distribution = .fillEqually
view.addSubview(stack)
stack.anchor(top: nil, left: view.leftAnchor, bottom: alreadyHaveAccountButton.topAnchor, right:
view.rightAnchor, paddingTop: 0, paddingLeft: 20, paddingBottom: 50, paddingRight: 20, width: 0, height: 0)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIWindow.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIWindow.keyboardWillHideNotification, object: nil)
@objc func keyboardWillShow(notification: NSNotification) {
let notification = notification.userInfo
let keyboardFrame = notification?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue
let keyboardFrameSize = keyboardFrame.cgRectValue
view.frame.origin.y -= keyboardFrameSize.height
}
@objc func keyboardWillHide(notification: NSNotification) {
let notification = notification.userInfo
let keyboardFrame = notification?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue
let keyboardFrameSize = keyboardFrame.cgRectValue
view.frame.origin.y += keyboardFrameSize.height
}
解决方案
推荐阅读
- angularjs - AngularJS 为工厂/服务附加价值
- sql - 如何在sql server中获取本周的每日数据
- artificial-intelligence - 我应该用什么来检测人群中的特定人?
- spring-boot - 基本 SpringBoot App 无法在 STS 中构建
- arduino - Arduino/Attiny85:ISR 和端口操作延迟
- python-3.x - symbolicRegressor 的 Y_train 值
- c# - 在验证循环中递增 errorProvider
- powershell - 从 powershell Get-ChildItem 结果中排除文件
- c# - 从列表列表中的组合框项目中显示列表
- python - 检查类型而不从外部库导入类型