2016-11-21 140 views
2

我有一個容器視圖的UIViewController。容器視圖的孩子是一個靜態tableView。 tableView的最後一個單元格有一個文本字段。當僅使用UITableViewController時,tableViewController在選擇文本字段時處理tableView的移動。現在,即使鍵盤出現,tableView也不會自行調整。任何解決方案當UITableViewController是容器視圖的子視圖時,UITableView不滾動

回答

0

您可以使用鍵盤通知滾動實現代碼如下起來

// Keyboard 
    func registerForKeyboardNotifications() { 
     NSNotificationCenter.defaultCenter().addObserver(self, 
                 selector: #selector(keyboardWillShow), 
                 name: UIKeyboardWillShowNotification, 
                 object: nil) 
     NSNotificationCenter.defaultCenter().addObserver(self, 
                 selector: #selector(keyboardWillHide), 
                 name: UIKeyboardWillHideNotification, 
                 object: nil) 
    } 

    deinit { 
     NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) 
     NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) 
    } 

    func keyboardWillShow(notification: NSNotification) { 
     if let userInfo = notification.userInfo { 
      if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
       let keyboardHeight = keyboardSize.height 
       let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardHeight, 0.0) 
       tableView.contentInset = contentInsets 
       tableView.scrollIndicatorInsets = contentInsets 
      } 
     } 
    } 

    func keyboardWillHide(notification: NSNotification) { 
     tableView.contentInset = UIEdgeInsetsZero 
     tableView.scrollIndicatorInsets = UIEdgeInsetsZero 
    } 

他們你打電話的viewDidLoad函數

override func viewDidLoad() { 
     super.viewDidLoad() 
registerForKeyboardNotifications() 
} 
+0

我已經在其他地方實現這一點。是否有可能使TableViewController處理它而不是使用鍵盤通知? – MrDank

+0

@Watson你可以使它在ScrollViewDelegate中,沒問題。 TableView是ScrollView的子類。 –

相關問題