iOS 零行代码实现键盘自适应

作者: 小猪也浪漫 | 来源:发表于2016-06-23 09:37 被阅读2232次

iOS 零行代码实现键盘自适应之(IQKeyboardManager)

一、主要特点

无需你输入任何代码,不需要额外的设置要求。使用IQKeyboardManager你只需要添加源文件到你的项目。

二、 IQKeyboardManager 支持 CocoaPods

1.使用CocoaPods管理第三方类库 IQKeyboardManager

pod ‘IQKeyboardManager’

2.导入头文件(这步可省略)

#import "IQKeyboardManager.h"

3.如果你不使用storyboard或xib创造你的视图。你需要重写-(void)UIViewController loadview方法,需要设置一个UIScrollView实例self.view。

-(void)loadView  

{ 

  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  

 self.view = scrollView; 

}

4.看效果当键盘遮挡输入文本框的时候,自动上移View,使被遮挡的部分自动处于键盘的上方。


回收键盘测试1.gif

5.在键盘上会自动添加一个工具条,工具条上有左箭头和右箭头用来切换的输入文本框,还有完成按钮用来收回键盘。


回收键盘测试2.gif
6.你也可以不使用这个自动工具条,设置的代码如下:
 [IQKeyboardManager sharedManager].enableAutoToolbar = NO;

7.为某一个ViewController禁用IQKeyboardManager

如果你想在某个 viewcontroller 禁用 IQKeyboardManager 你应该在 ViewDidAppear 中禁用IQKeyboardManager,而在ViewWillDisappear启用它
代码:

#import "IQKeyboardManager.h"
@implementation ExampleViewController
{
    BOOL _wasKeyboardManagerEnabled;
}

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    _wasKeyboardManagerEnabled = [[IQKeyboardManager sharedManager] isEnabled];
    [[IQKeyboardManager sharedManager] setEnable:NO];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [[IQKeyboardManager sharedManager] setEnable:_wasKeyboardManagerEnabled];
}
@end

8.把键盘的done改为“完成”

效果图.png

IQUIView+IQKeyboardToolbar.m文件里面,找到这一个,替换成initWIthTitle这个方法

//  IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:target action:doneAction];

是不是很心动,赶紧测试吧❤️

相关文章

网友评论

  • 一杯红酒mm:你好。你那个纯代码写的界面 如果直接点击最下面那个输入框键盘自适应就会失效的。请问有什么好的解决办法吗
    小猪也浪漫:啊哈哈哈哈,那就不要乱点:joy:
  • 为心而狂:是不是更新了,怎么禁用某个控制器不可以了
  • 一达:请问一下,如果把done改成完成
    小猪也浪漫:@懿战成名IQUIView+IQKeyboardToolbar.m文件里面,找到这一个,替换成initWIthTitle这个方法
    // IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:target action:doneAction];
    IQBarButtonItem *doneButton =[[IQBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:target action:doneAction];
  • 为心而狂:键盘还是把视图遮挡了
    小猪也浪漫:@为心而狂 如果你不使用storyboard或xib创造你的视图。你需要重写-(void)UIViewController loadview方法,需要设置一个UIScrollView实例self.view。

    -(void)loadView

    {

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.view = scrollView;

    }
  • 为心而狂:我使用的是storyboard
    小猪也浪漫:@为心而狂 storyboard只要 pod ‘IQKeyboardManager’ 成功就可以键盘实现自适应 :smile:
  • 为心而狂:请问一下我导入了文件,怎么没有实现我的效果
    小猪也浪漫: @为心而狂 你是个女程序猿吧?挺佩服你们这么晚还在研究问题,加油!
    为心而狂: @小猪也浪漫 先使用cocoapods不行,后面直接导入就可以了
    小猪也浪漫:@为心而狂 你是怎么导入的?手动拖入,还是使用CocoaPods管理第三方类库 IQKeyboardManager?
  • 小猪也爱闹:发现你的文章本宝宝看不来。嘤嘤嘤,哭泣
    小猪也爱闹: @小猪也浪漫 然而你都没有关注本宝宝,本宝宝不开心了。不给你酒了。难过.jpg
    小猪也爱闹: @小猪也浪漫 好啊(*^◎^*)给你酒给你酒
    小猪也浪漫:@小猪也爱闹 你有酒没?我可以给你讲讲我过去的故事❤❤❤
  • 一只知更鸟的人生:请教下,为什么只是安装这个库,连头文件都不用引入就可以实现自适应,这什么原理?
  • 贱精先玍丶:我是冲着标题来的
    小猪也浪漫:@贱精先玍丶 要怪就怪这个社会太污啦,本宝宝居然也沦落为标题党了:joy:
  • 背着吉他去流浪:这个很简单,只要把IQKeyboard整个库导进去,自适应的
    小猪也浪漫:@背着吉他去流浪 就是就是 :smile:
  • JoyceZhao:有完整的示例代码吗?求分享
    小猪也浪漫:@JoyceZhao 这个很简单,只要工程导入三方IQKeyboardManager就可以实现键盘自适应 ,连头文件都可以不用导入:smile:
  • __西门吹雪:挺好的。
  • 小麦小羊:回头看看
  • 夜色红雪: 重写不算代码么..........那SDWebImage怎么算...........
    小猪也浪漫:工地缺个抬杠的,我看你行……
  • 薛定谔的熊:哪里零代码
  • 2a63870ec47a:不错!用过就是新版本8以上需要
  • U_LA起誓四境:ios8以上吧
  • 梦里风吹过:IQKeyboardManager基本是涉及键盘遮挡必备第三方,包括里面的带占位符texeview都是经常用到的
  • 鼻毛长长:禁用启用那里有点繁琐啊
    小猪也浪漫:@鼻毛长长 这个禁用基本用不上

本文标题:iOS 零行代码实现键盘自适应

本文链接:https://www.haomeiwen.com/subject/gmvndttx.html