这里附上下载链接:https://github.com/hackiftekhar/IQKeyboardManager
IQKeyboardManager支持Objective-C和swift,这里建议实用Cocoapod安装,很方便管理。
简单总结一下IQKeyboardManager最重要的功能有以下几点:
1.当键盘遮挡输入文本框的时候,自动上移View,使被遮挡的部分自动处于键盘的上方。
)
常用设置:
IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager]; // 获取类库的单例变量 keyboardManager.enable = YES; // 控制整个功能是否启用 keyboardManager.shouldResignOnTouchOutside = YES; // 控制点击背景是否收起键盘 keyboardManager.shouldToolbarUsesTextFieldTintColor = YES; // 控制键盘上的工具条文字颜色是否用户自定义 keyboardManager.toolbarManageBehaviour = IQAutoToolbarBySubviews; // 有多个输入框时,可以通过点击Toolbar 上的“前一个”“后一个”按钮来实现移动到不同的输入框 keyboardManager.enableAutoToolbar = YES; // 控制是否显示键盘上的工具条 keyboardManager.shouldShowTextFieldPlaceholder = YES; // 是否显示占位文字 keyboardManager.placeholderFont = [UIFont boldSystemFontOfSize:17]; // 设置占位文字的字体 keyboardManager.keyboardDistanceFromTextField = 10.0f; // 输入框距离键盘的距离
导入IQKeyboardManager后,默认所有的页面都有了这个功能,如果你在哪一个界面不想有这个效果可以在当前界面控制器的生命周期方法中进行设置:
#import <IQKeyboardManager.h> - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [IQKeyboardManager sharedManager].enable = NO; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [IQKeyboardManager sharedManager].enable = YES; }
或者在 AppDelegate中注册方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[IQKeyboardManager sharedManager] disableInViewControllerClass:[ViewController class]]; return YES; }
2.在键盘上会自动添加一个工具条,工具条上有左箭头和右箭头用来切换的输入文本框,还有完成按钮用来收回键盘。
你也可以不使用这个自动工具条,设置的代码如下:
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
3.可以将键盘上的return按键,变为Next/Done按键,默认最后一个UITextField/UITextView的键盘return键变为Done。顺序是按照创建控件的先后顺序,而不是从上到下的摆放顺序。
设置的代码如下:
#import <IQKeyboardReturnKeyHandler.h> @implementation ViewController { IQKeyboardReturnKeyHandler *returnKeyHandler; } - (void)viewDidLoad { [super viewDidLoad]; returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self]; }
4.设置点击背景收回键盘。
- (void)viewDidLoad { [super viewDidLoad]; [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES; }
5.如果你的视图有导航栏,你不想上移View时,UINavigationBar消失,如function3.gif所示,你也可以进行相应设置:
如果你使用的是storyboard or xib,只需将当前视图视图控制器中的UIView class变为UIScrollView。
如果你使用的是代码,你就需要覆盖UIViewController中的'-(void)loadView' 方法:
-(void)loadView { UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.view = scrollView; }
数据参考来源简书