gpt4 book ai didi

ios - 出现键盘时快速移动 View - 错误

转载 作者:行者123 更新时间:2023-11-29 01:46:41 25 4
gpt4 key购买 nike

我刚开始使用 swift 进行开发,不知道如何解决我的问题。我有两种看法。一种用于注册,另一种用于登录。我将以下功能添加到我的 viewControllers 中,一切正常。当我单击每个文本字段(用于密码、用户名)时, View 会在键盘出现时向上移动。但是当我登录用户并调用我的代码的“第 2 部分”并且用户登录时, View 从我的 signInView 更改为我的 signUpView。问题:在我执行了以下步骤并现在在我的 textFields 上使用 Tab 键后,键盘不再出现。

第 1 部分:signInViewController 中的代码:

var kbHeight: CGFloat!

override func viewDidLoad() {
super.viewDidLoad()

textFieldUserName.delegate = self
txtFieldUserPassword.delegate = self
}

func textFieldShouldReturn(textField: UITextField) -> Bool {
txtFieldUserPassword.resignFirstResponder()

return true
}

//viewDidAppear or viewWillAppear?
override func viewDidAppear(animated:Bool) {
super.viewWillAppear(animated)

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
}

override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)

NSNotificationCenter.defaultCenter().removeObserver(self)
}

func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
kbHeight = keyboardSize.height-50
self.animateTextField(true)
}
}
}

func keyboardWillHide(notification: NSNotification) {
self.animateTextField(false)
}

func animateTextField(up: Bool) {
let movement = (up ? -kbHeight : kbHeight)

UIView.animateWithDuration(0.3, animations: {
self.view.frame = CGRectOffset(self.view.frame, 0, movement) //Fatal Error: nil sometimes? - Why?
})
}

第 2 部分:signInViewController 中的代码

do {
try signup.signUpUser()
self.showAlert(self)
} catch ...


func showAlert(viewController : UIViewController) -> Void {

let alertController = UIAlertController(title: "Registrieren erfolgreich", message: "Sie können sich jetzt Anmelden", preferredStyle: .Alert)

alertController.addAction(UIAlertAction(title: "Anmelden", style: .Default, handler: { (alertAction) -> Void in self.dismissViewControllerAnimated(true, completion: nil) }))

viewController.presentViewController(alertController, animated: true, completion: nil)

最佳答案

我在我的一个应用程序中使用了这个名为 TPKeyboardAvoiding 的便捷解决方案:https://github.com/michaeltyson/TPKeyboardAvoiding

有了这个库,你就不需要在你的应用程序上处理这种滚动行为,想象一下你可以在其他 VC 中有其他行为,你需要每次都计算它。

关于ios - 出现键盘时快速移动 View - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com