2015-01-08 3 views
0

Я нужен совет о том, как сделать это (лучший способ практики):чат Экран/Window Layout Design

chat screen design[][1]

Я использую XCode 6.1.1 с помощью Swift с autolayout Enabled. Так что на картинке я уже установил макет таким образом. Обратите внимание, что в Scrollview, я положил UITableView вместе с другим UIView, которые содержат UITextField в нем

я уже это реализовать: How to make a UITextField move up when keyboard is present?

Так вот мой код:

func registerForKeyboardNotifications() 
{ 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidShow:", name: UIKeyboardDidShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidHide:", name: UIKeyboardDidHideNotification, object: nil) 
} 

func keyboardDidShow(aNotification: NSNotification) 
{ 
    var info: NSDictionary = aNotification.userInfo! 
    var kbSize: CGSize = (info.objectForKey(UIKeyboardFrameBeginUserInfoKey)?.CGRectValue() as CGRect!).size 

    var contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0) 
    svBody.contentInset = contentInsets 
    svBody.scrollIndicatorInsets = contentInsets 

    self.view.layoutIfNeeded() 
} 

func keyboardDidHide(aNotification: NSNotification) 
{ 
    var contentInsets: UIEdgeInsets = UIEdgeInsetsZero 
    svBody.contentInset = contentInsets 
    svBody.scrollIndicatorInsets = contentInsets 

    self.view.layoutIfNeeded() 
} 

Проблема заключается в том когда я запускаю его, я также могу прокрутить мой viewBottom за клавиатурой, который мне не нужен.

result[][2]

То, что я пытаюсь достичь являются:

  • мне нужно viewBottom наклеить на верхней части клавиатуры
  • Только myTable, который можно прокручивать

Как я могу сделать это наилучшим образом?

ответ

1

Хорошо, я понял это сам.

Вот код для каждого использования:

func registerForKeyboardNotifications() 
{ 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidShow:", name: UIKeyboardDidShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidHide:", name: UIKeyboardDidHideNotification, object: nil) 
} 

func keyboardDidShow(aNotification: NSNotification) 
{ 
    var info: NSDictionary = aNotification.userInfo! 
    var kbSize: CGSize = (info.objectForKey(UIKeyboardFrameBeginUserInfoKey)?.CGRectValue() as CGRect!).size 

    UIView.animateWithDuration(0.2, animations: {() -> Void in 
     var contentInsets: UIEdgeInsets = UIEdgeInsetsMake(kbSize.height, 0, 0, 0) 
     self.myTable.contentInset = contentInsets 
     self.myTable.scrollIndicatorInsets = contentInsets 

     var contentOffsetSV: CGPoint = CGPointMake(0, kbSize.height) 
     self.svBody.contentOffset = contentOffsetSV 

     self.view.layoutIfNeeded() 
    }) 

} 

func keyboardDidHide(aNotification: NSNotification) 
{ 
    UIView.animateWithDuration(0.2, animations: {() -> Void in 
     var contentInsets: UIEdgeInsets = UIEdgeInsetsZero 
     self.myTable.contentInset = contentInsets 
     self.myTable.scrollIndicatorInsets = contentInsets 

     var contentOffsetSV: CGPoint = CGPointMake(0, 0) 
     self.svBody.contentOffset = contentOffsetSV 

     self.view.layoutIfNeeded() 
    }) 
} 

Хорошо поделиться;) Приветствия,

Адриан