开发中使用IQKeyboardManager遇到的问题

1.在工程中使用pod倒入IQKeyboardManager这个库,默认会对工程中的每个页面开启IQKeyboardManager。一般会在AppDelegate 中的

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

方法中加上:

[[IQKeyboardManager sharedManager] setEnable:NO];

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];

关闭IQKeyboardManager。在需要开启的页面中打开IQKeyboardManager

-(void)viewWillAppear:(BOOL)animated 
{ 
    [superviewWillAppear:animated]; 
    [[IQKeyboardManager sharedManager] setEnable:YES]; 
    [[IQKeyboardManager sharedManager] setShouldResignOnTouchOutside:YES]; 
}

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [[IQKeyboardManager sharedManager] setEnable:NO]; 
    [[IQKeyboardManager sharedManager] resignFirstResponder];
}

2.在tableview的cell里面有textfield和textview,在开始编辑textfield的时候,同时还会调用textview的开始编辑代理方法,此时需要在viewWillAppear方法里面需要设置

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];

3.在tableview的cell里面有textfield和textview,切textview编辑时改变cell的高度

我使用的是tableview的自动更新高度,在cell里面实现

- (void)textViewDidChange:(UITextView*)textView

的方法,此时在iOS11系统没有问题,在8,9,10的系统无法更新,此时在

- (void)textViewDidChange:(UITextView*)textView

中添加

[self layoutIfNeeded];

可以更新cell高度,切键盘的光标始终在键盘上面。

4.在tableview的cell里面有textfield和textview,切textview编辑时改变cell的高度,当textview粘贴时,无法使光标始终在键盘上面???