在iOS开发中常常出现键盘弹起遮挡UITextField/UITextView等情况,或者需要对键盘设置工具条。
一、使用监听键盘弹出来去除视图遮挡,如下
[objc] view plain copy
<span style="font-size:18px;">//监控键盘事件通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyBoardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyBoardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];
#pragma mark - 键盘弹出
- (void)keyBoardWillShow:(NSNotification *)not
{
//获取通知对象
NSDictionary *userInfo = [notuserInfo];
//获取键盘对象
NSValue *value = [userInfoobjectForKey:UIKeyboardFrameEndUserInfoKey];
//获取键盘frame
CGRect keyboardRect = [valueCGRectValue];
//获取键盘高度
int height = keyboardRect.size.height;
CGRect frame =self.view.frame;
//计算视图上移幅度
frame.origin.y = -height *0.8;
//键盘弹出视图上移
[UIViewanimateWithDuration:0.18animations:^{
self.view.frame = frame;
}];
}
#pragma mark -键盘收回调用
- (void)keyBoardWillHide:(NSNotification *)not
{
CGRect frame =self.view.frame;
frame.origin.y =0;
//键盘弹出视图上移
[UIViewanimateWithDuration:0.18animations:^{
self.view.frame = frame;
}];
}
</span></span>
二、IQKeyboardManager是一款十分实用的工具,不需要额外的设置,使用IQKeyboardManager的你只需要将源文件添加到项目,就可以使用相关功能,IQKeyboardManager支持Objective-C和swift。
这里附上下载链接:https://github.com/hackiftekhar/IQKeyboardManager
也可以用Cocoapod安装
(1)、IQKeyboardManager的基本功能
a、当键盘遮挡输入文本框的时候,自动上移View,使被遮挡的部分自动处于键盘的上方。
b、导入IQKeyboardManager后,默认所有的页面都有了这个功能
c、在键盘上会自动添加一个工具条,工具条上有左箭头和右箭头用来切换的输入文本框,还有完成按钮用来收回键盘。
d、点击空白部分键盘回收等
(2)、IQKeyboardManager的基本设置
可以在-(BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中设置
[objc] view plain copy
<span style="font-size:18px;">IQKeyboardManager *manager = [IQKeyboardManagersharedManager];
manager.enable =YES;// 控制整个功能是否启用。
manager.shouldResignOnTouchOutside =YES;//控制点击背景是否收起键盘
manager.shouldToolbarUsesTextFieldTintColor =YES;//控制键盘上的工具条文字颜色是否用户自定义
manager.toolbarDoneBarButtonItemText =@"完成";//将右边Done改成完成
manager.enableAutoToolbar =YES;// 控制是否显示键盘上的工具条
manager.toolbarManageBehaviour =IQAutoToolbarByTag;//最新版的设置键盘的returnKey的关键字 ,可以点击键盘上的next键,自动跳转到下一个输入框,最后一个输入框点击完成,自动收起键盘。</span>
扩展:
[objc] view plain copy
<span style="font-size:18px;">#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) IQKeyboardReturnKeyHandler *returnKeyHandler;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置returnKeyHandler,可以点击键盘上的next键,自动跳到下一个输入框。最后一个输入框点击done自动收起键盘。
self.returnKeyHandler=
[[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
self.returnKeyHandler.lastTextFieldReturnKeyType = UIReturnKeyDone;
self.returnKeyHandler.toolbarManageBehaviour = IQAutoToolbarBySubviews;
}</span>
如果视图有导航栏,不想上移View时,UINavigationBar消失:
在UIViewController中
[objc] view plain copy
<span style="font-size:18px;">-(void)loadView{
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = scrollView;
}</span>
来源:抚顺市博远电子,如涉及版权问题请与我们联系。
TAG
软件定制,软件开发,瀚森HANSEN,辽宁,沈阳,抚顺