我的LoginViewController有一个UIView,它有2个UItextfield和1个UI按钮。用户开始写UIView的那一刻应该上升并为键盘留出空间。然而我的问题是当键盘消失时UIView没有进入其初始位置。请有人帮助我,谢谢......(我的代码如下)
func keyboardON(sender: NSNotification) {
let info = sender.userInfo!
var keyboardSize = info[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue().size
println("keyboard height \(keyboardSize.height)")
var frame = otherContainerView.frame
println("MainScreen :\(UIScreen.mainScreen().bounds.height)")
frame.origin.y = UIScreen.mainScreen().bounds.height - keyboardSize.height - frame.size.height
otherContainerView.frame = frame
}
func keyboardNotOn(sender: NSNotification) {
let info = sender.userInfo!
var keyboardSize = info[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue().size
println("keyboard height \(keyboardSize.height)")
var frame = otherContainerView.frame
frame.origin.y = UIScreen.mainScreen().bounds.height - frame.size.height
otherContainerView.frame = frame
}
答案 0 :(得分:2)
我建议您将此视图控制器更改为具有静态单元格的UITableViewController。使用UITableViewController时,会自动处理滚动,从而使您的问题完全没有问题。
如果我正确地理解了你的初始问题,你正试图在UIViewController中创建一个登录界面,这很好,但比创建一个UITableViewController要困难得多。上面的图像是用UITableViewController制作的。选择文本字段后,它会向上滑动,当取消选择它们时,它会移回到它的初始视图。如果切换到UITableViewController,(即使将UITextFields和按钮放在一个单元格中),也不需要以编程方式执行任何操作。故事板将处理所需的更改。
import UIKit
class LoginTableViewController: UITableViewController {
@IBOutlet weak var usernameTextField : UITextField!
@IBOutlet weak var passwordTextField : UITextField!
@IBAction func login (sender: UIButton) {
//login button
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//If you choose to use 3 cells in your storyboard (like I've done with my login screen) you will return 3 here. If you choose to put all of the items in one cell, return 1 below.
return 3
}
}