У меня есть 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)
}
}
}
}
Предложение: Используйте [TPKeyboardAvoiding] (http s: //github.com/michaeltyson/TPKeyboardAvoiding) –