2015-05-23 4 views
0

У меня есть UIScrollView с содержимым внутри него. У этого есть встроенный UITableViewcontroller, который содержит статические ячейки. Я бы хотел прокрутить UIScrollView, когда я выбираю UITextField внутри статических ячеек. Я попробовал это двумя способами: 1. вычислить положение, 2. вычислить индекс ячейки. В обоих случаях я получаю одинаковые значения, когда я выбираю любой UIF-файл. Может кто-нибудь помочь мне, чтобы это было исправлено?Прокрутка UIScrollView по выбору UITextField, не может получить правильные размеры

Я использовал этот вопрос: How do I scroll the UIScrollView when the keyboard appears?

func keyboardWasShown(notification : NSNotification){ 

     var info = notification.userInfo 

//  var kbSize = info(UIKeyboa 
     if let userInfo = notification.userInfo { 
      if let kbSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
       let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: kbSize.height, right: 0) 

       scrollView.contentInset = contentInsets; 
       scrollView.scrollIndicatorInsets = contentInsets; 


       //first approach 
       println("---- approach 1 ------") 
       var activeField = self.container?.groupField.superview?.superview 
       println(activeField!.frame.origin) 
       //prints (110.0, 5.0) 



       //second approach 
       println("---- approach 2 ------") 
       var cell = self.container?.groupField.superview?.superview as! UITableViewCell 
       var table = self.container?.view as! UITableView 
       var index = table.indexPathForCell(cell) 
       println("index: \(index?.row)") 
       //prints always 4 



       var aRect = self.view.frame 
       aRect.size.height -= kbSize.height 
//    println("aRect: \(aRect)") 
       if (!CGRectContainsPoint(aRect, activeField!.frame.origin)) { 
        println("ActiveField: \(activeField!.frame.origin.y)") 
        var scrollPoint = CGPointMake(0.0, activeField!.frame.origin.y-kbSize.height) 
        scrollView.setContentOffset(scrollPoint, animated:true) 
       } 
      } 
     } 
    } 
+0

Предложение: Используйте [TPKeyboardAvoiding] (http s: //github.com/michaeltyson/TPKeyboardAvoiding) –

ответ

0

Это была глупая ошибка, я выбрал поле по умолчанию, как activefield

я заменил: var activeField = self.container?.groupField.superview?.superview

к: var activeField = self.container?.activeField.superview?.superview

Смежные вопросы