IQKeyboard输入框上移的原理:
从输入框往底层找,如果找到的是scrollView,则scrollView往上滑,如果scrollView比较小,先把scrollView往上滑(这时候输入框还是不够高,但是scrollView再往上,输入框就已经滑出外面了,所以scrollView只能滑一定的高度),再往底层找能滑动的视图,如果只找到了VC.view,那么会把VC.view整体往上推,这样就出现了导航栏被推上去了的现象。用以下流程图可以更直观:
绿线是希望的结果,条件是有足够大的scrollView。导致导航栏上移的原因最终只有一个,没有可滑动视图而找到了self.view。所以,我们要制造一个足够大的scrollView
网上方法:将VC.view设为scrollView是不可取的,因为,很多时候导航栏是自定义的,不是系统的,导航栏是加在self.view上的,如果self.view往上推,加在self.view上的东西,都统统往上推了,所以不可取。
问题重现:
解决方法:
把输入框放在一个足够大的scrollView上。想方设法制造一个大的scrollView。