2016-08-24 15 views
0

メインビューと同じ高さではないuiscrollviewがあります。私はこのスクロールビューの外にuitextフィールドとボタンを持っています。私はそこに値を入力し、ボタンをクリックすると、スクロールビュー内に別のテキストフィールドが作成され、もう一度押すと、以前に作成されたテキストフィールドの下に別のテキストフィールドが作成されます。今、私はキーボードビューの上に表示する必要があります新しく作成されたテキストフィールドにビューをスクロールしようとしています。私は以下を試した。それは動作しません。スウィフト:スクロールしていない

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 .:新しいテキストフィールドが作成されるたびにrowsCountが増加します。

+0

正確な要件が満たされていません。ボタンを押すと新しいテキストフィールドが作成されますので、そのテキストフィールドをアクティブなテキストフィールド(キーボードはそのために表示されます)にしますか? – Lion

+0

私はアクティブなテキストフィールドが常に私が値を入力しているので、私はアクティブなテキストフィールドが嫌いです(そのうちの1つは、uiscrollview外です)。私が望むのは、新しく作成されたテキストフィールドにスクロールするスクロールビューです。 –

答えて

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を渡して、同様にあなたが行うことができます。

+0

は機能しません。問題は、そのテキストフィールドがそのビュー(uiscrollview - keyboardview)内にあるかどうかをチェックしようとしていますが、そのテキストフィールドが完全なuiscrollview内にあるかどうかをチェックしています。 –

関連する問題