How do we make keyboard appear below textView in swift?

One of the easy and no code of line solution is to use the following pods in your app.

IQKeyboardManger

Later you need to just import that in App Delegate and add this two lines of code in didfinishLaunching method:

  IQKeyboardManager.sharedManager().enable = true

Your problem will be solved for whole app.

For Swift 5:

IQKeyboardManager.shared.enable = true

I have gone through such a situation. For this first I added extension in my UiViewController :

    extension CCViewController : UITextViewDelegate {
        func textViewDidBeginEditing(_ textView: UITextView) {
            // write code as per your requirements
        }

        func textViewDidEndEditing(_ textView: UITextView) {
             // write code as per your requirements
        }

        func textViewDidChange(_ textView: UITextView) {
            self.p_adjustMessageFieldFrameForTextView(textView)
        }
    }

    // Defining the p_adjustMessageFieldFrameForTextView method

    fileprivate func p_adjustMessageFieldFrameForTextView(_ textView : UITextView) {
            var finalheight : CGFloat = textView.contentSize.height + 10
            var kMaxMessageFieldHeight : CGFloat = 50
            if  (finalheight > kMaxMessageFieldHeight) {
                finalheight = kMaxMessageFieldHeight;
            } else if (finalheight < kCommentTextViewHeight){
                finalheight = kCommentTextViewHeight;
            }

            scrollView!.view.frame = CGRect(x: 0, y: kNavBarHeight + statuBarHeight, width: SCREEN_WIDTH,height: SCREEN_HEIGHT - finalheight - keyboardRect!.size.height - kNavBarHeight - statuBarHeight)
// It is there for understanding that we have to calculate the exact frame of scroll view

            commentTextView!.frame = CGRect(x: 0, y: bottomOfView(scrollView!.view), width: SCREEN_WIDTH, height: finalheight)
            self.p_setContentOffsetWhenKeyboardIsVisible()
        }

    // Defining the p_setContentOffsetWhenKeyboardIsVisible method

    fileprivate func p_setContentOffsetWhenKeyboardIsVisible() {
            // here you can set the offset of your scroll view
        }

Also there is a method named bottomView() :

func bottomOfView(_ view : UIView) -> CGFloat {
        return view.frame.origin.y + view.frame.size.height
    }

You can simply use TPKAScrollViewController.h & TPKAScrollViewController.m files by using Bridging Header.

While dragging these objective-C file to your swift project, it will automatically ask for Create Bridging. Create Bridging Header and Import #import "TPKAScrollViewController.h" to YourApp-Bridging-Header.h file.

enter image description here

After that, simply select your scrollView in XIB and change its class to TPKeyboardAvoidingScrollView as showing below.

enter image description here