2017-01-12 8 views
1

UITextViewの編集を開始するときにこのコードを使用して表示をスクロールしています。UITextViewのキーボードが表示され、同じビューにあるUITextFieldのキーボードが表示されない場合は、スクロール表示

override func viewDidLoad() { 
     super.viewDidLoad() 

     NotificationCenter.default.addObserver(self, selector: #selector(Login.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 
     NotificationCenter.default.addObserver(self, selector: #selector(Login.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 

} 

func keyboardWillShow(notification: NSNotification) { 

    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     if self.view.frame.origin.y == 0{ 
      self.view.frame.origin.y -= keyboardSize.height 
     } 
    } 

} 

func keyboardWillHide(notification: NSNotification) { 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     if self.view.frame.origin.y != 0{ 
      self.view.frame.origin.y += keyboardSize.height 
     } 
    } 
} 

しかし、私はまた、このビューの上部にUITextFieldを持っている、と私はそれの編集を開始するときのビューにもスクロールします。私はこれが起こることを望んでいない。 UITextFieldキーボードがアクティブになっているときに、UITextViewキーボードがアクティブなときにスクロールするようにコードを変更するにはどうすればよいですか?

+0

原点をキーボードの高さで変更して盲目的にスクロールしないでください。新しい最初のレスポンダを表示させるためにスクロールする必要があるかどうかを計算します。 – rmaddy

答えて

1

scrollBy //

ユーザーのTextViewのdelgate、コードのこの部分を試してみてください - キーボードが

func textViewDidBeginEditing(_ textView: UITextView) 
    { 
     scrView.setContentOffset(CGPoint.init(x: 0, y: scrollBy), animated: true) 

    } 

    func textViewDidEndEditing(_ textView: UITextView) 
    { 
     scrView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true) 

     self.view.endEditing(true); 
    } 
+0

ありがとう!私はそれを試みます。 –

-3

の代わりに、私はあなたが追加する必要があります示唆しているコードを表示されたとき、あなたのscrollviewをスクロールさせたいの高さを渡しますTPkeyboardファイルを使用すると、必要に応じてキーボードを切り替えることができます

関連する問題