UIview一直在UIViewcontroller的底部

时间:2015-07-11 22:14:36

标签: swift

我的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
}

1 个答案:

答案 0 :(得分:2)

我建议您将此视图控制器更改为具有静态单元格的UITableViewController。使用UITableViewController时,会自动处理滚动,从而使您的问题完全没有问题。

Login page being handled with a 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
   }

}