2015-07-11 50 views
0

我的LoginViewController有一個UIView有2個UItextfield和1個UIbutton。用戶開始寫UIView的時刻應該上去,爲鍵盤留出空間。但是,我的問題是,當鍵盤消失UIView沒有在其初始位置。誰能幫我請謝謝...(我的代碼如下)UIview繼續在UIViewcontroller的底部

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 
} 

回答

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 
    } 

} 
+0

我已經更新了我的回覆,以更多地解釋爲什麼您嘗試實施的方法比它可能更難。 –

+0

在您的main.storyboard中,您需要拖出一個UITableViewController並將其設置爲LoginTableViewController類型。一旦你這樣做,確保細胞是靜態的。添加你的UITextFields和你的UIButton。然後將您的文本框和按鈕連接到上面找到的IBOutlets。這就是你應該做的。 –

+0

如果您的單元格是動態的,則只需設置cellForRowAtIndexPath。但是,你會希望它們是靜態的。 –