在线咨询
QQ咨询
服务热线
服务热线:13125520620
TOP

iOS学习之键盘设置以及IQKeyboardManager

发布时间:2018-5-27 浏览:3191

 
在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
0
该内容对我有帮助