Swift:滚动不工作

时间:2016-08-24 07:39:17

标签: ios swift uiscrollview uitextfield cgrect

我有一个uiscrollview,其高度与主视图不同。我有一个uitextfield和一个滚动视图外的按钮。我在那里输入一个值,然后单击按钮,它会在scrollview中创建另一个文本字段,然后如果再次按下,它将在上一个创建的文本字段下面创建另一个文本字段。现在,我正在尝试将视图滚动到新创建的文本字段,该文本字段应该在键盘视图上方可见。我尝试了以下内容。它不起作用:

func keyboardWillShow() {
var userInfo = notification.userInfo!
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
let textField: UITextField = self.scrollView!.viewWithTag(rowsCount) as! UITextField
let newRect: CGRect = CGRectMake(textField.frame.origin.x, textField.frame.origin.y, textField.frame.width, textField.frame.height)
let newFrame = self.view.convertRect(newRect, fromView: nil)
keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil)
//          contentInset.bottom = newRect.origin.y + newRect.height
            var viewRect: CGRect = self.view.frame
            viewRect.size.height = viewRect.height - keyboardFrame.height - 40.0

            if (!CGRectContainsPoint(viewRect, (newFrame.origin))) {
                self.scrollView.scrollRectToVisible((newFrame), animated: true)
            }
}

P.S。:每次创建新文本字段时,rowsCount都会增加。

1 个答案:

答案 0 :(得分:0)

你可以这样做,

 scrollView.scrollRectToVisible(CGRect(x: x, y: y, width: 1, height: 1), animated: true)

 // or

 scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true)

点击按钮,将你的x和y传递给它。