iOS 键盘自适应(IQKeyboardManager)使用小结

经常在开发一个应用程序,我们遇到了一个问题,iPhone的键盘上滑覆盖的UITextField / UITextView。IQKeyboardManager可以防止键盘滑动问题和覆盖UITextField / UITextView无需你输入任何代码,不需要额外的设置要求。使用IQKeyboardManager你只需要添加源文件到你的项目。

主要特点

1)无代码

2)自动工作

3)没有更多的UIScrollView

4)没有更多的子类

5)没有更多的手动工作

6)没有更多#imports

截图

IQKeyboardManager 支持 CocoaPods

pod ‘IQKeyboardManager’

管理

UINavigationBar

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

-(void)loadView

{

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

self.view= scrollView;

}

为某一个ViewController禁用IQKeyboardManager

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

代码:

#import"IQKeyboardManager.h"@implementationExampleViewController{BOOL_wasKeyboardManagerEnabled;}-(void)viewDidAppear:(BOOL)animated{    [superviewDidAppear:animated];    _wasKeyboardManagerEnabled = [[IQKeyboardManager sharedManager] isEnabled];    [[IQKeyboardManager sharedManager] setEnable:NO];}-(void)viewWillDisappear:(BOOL)animated{    [superviewWillDisappear:animated];    [[IQKeyboardManager sharedManager] setEnable:_wasKeyboardManagerEnabled];}@end

键盘的回车键处理

1)创建一个实例变量实例化IQKeyboardReturnKeyHandler在ViewController的viewDidLoad中

代码:

@implementationViewController{IQKeyboardReturnKeyHandler *returnKeyHandler;}- (void)viewDidLoad{    [superviewDidLoad];    returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];}

改变键盘上的返回键。

设置实例变量为零的dealloc方法

-(void)dealloc{    returnKeyHandler = nil;}

UIToolbar(IQToolbar)

1)如果你不想添加一个特定的自动工具栏在键盘上方,应该添加一个类作为它的工具栏

textField.inputAccessoryView=[[UIView alloc] init];

2)如果你需要自己控制上/下/完成按钮,那么应该使用UIView类的方法,创建你的文本框工具栏。

代码:

-(void)viewDidLoad{  [superviewDidLoad];//Adding done button for textField1[textField1 addDoneOnKeyboardWithTarget:selfaction:@selector(doneAction:)];//Adding previous/next/done button for textField2[textField2 addPreviousNextDoneOnKeyboardWithTarget:selfpreviousAction:@selector(previousAction:) nextAction:@selector(nextAction:) doneAction:@selector(doneAction:)];//Adding cancel/done button for textField3[textField3 addCancelDoneOnKeyboardWithTarget:selfcancelAction:@selector(cancelAction:) doneAction:@selector(doneAction:)];}/*! previousAction. */-(void)previousAction:(id)button{//previousAction}/*! nextAction. */-(void)nextAction:(id)button{//nextAction}/*! doneAction. */-(void)doneAction:(UIBarButtonItem*)barButton{//doneAction}/*! cancelAction. */-(void)cancelAction:(UIBarButtonItem*)barButton{//cancelAction}

功能和使用

UIKeyboard 处理

+(instancetype)sharedManager : Returns thedefaultsingleton instance.@propertyBOOL enable :Usethistoenable/disable managing distance between keyboard & textField/textView).@propertyCGFloat keyboardDistanceFromTextField : Set Distance between keyboard & textField. Can'tbe less than zero.Defaultis10.@propertyBOOL preventShowingBottomBlankSpace : Preventtoshow bottom blanck areawhenkeyboard slide up the view.

IQToolbar处理

@propertyBOOL enableAutoToolbar : Enable autoToolbar behaviour.IfItissettoNO. You havetomanually create UIToolbarforkeyboard.DefaultisYES.@propertyIQAutoToolbarManageBehaviour toolbarManageBehaviour : Setting toolbar behaviourtoIQAutoToolbarBySubviewstomanage previous/nextaccordingtoUITextField'shierarchyinit'sSuperView. Set ittoIQAutoToolbarByTagtomanage previous/nextaccordingtoUITextField'stagpropertyinincreasing order.DefaultisIQAutoToolbarBySubviews.@propertyBOOL shouldToolbarUsesTextFieldTintColor :IfYES,thenuses textField'stintColorpropertyforIQToolbar, otherwise tintColorisblack.DefaultisNO. @propertyBOOL shouldShowTextFieldPlaceholder :IfYES,thenit add the textField'splaceholder textonIQToolbar.DefaultisYES. @propertyUIFont *placeholderFont : placeholder Font.Defaultisnil.DefaultisYES.

UITextView处理

@propertyBOOL canAdjustTextView : Giving permissiontomodify TextView'sframe. Adjust textView'sframewhenitistoo biginheight.DefaultisNO.@propertyBOOL shouldFixTextViewClip : Adjust textView'scontentInsettofix fixforiOS7.0.x -(#Stackoverflow).DefaultisYES.

UIKeyboard 外观覆盖

@propertyBOOL overrideKeyboardAppearance :Overridethe keyboardAppearanceforall textField/textView.DefaultisNO.@propertyUIKeyboardAppearance keyboardAppearance :IfoverrideKeyboardAppearanceisYES,thenall the textField keyboardAppearanceissetusingthisproperty.

关闭UITextField/UITextView

@propertyBOOLshouldResignOnTouchOutside : Resign textFieldiftouched outside of UITextField/UITextView.-(void)resignFirstResponder : Resigns currently first responder field.

UISound处理

@propertyBOOL shouldPlayInputClicks :IfYES,thenit plays inputClick soundonnext/previous/done click.DefaultisNO.

UIAnimation

@propertyBOOL shouldAdoptDefaultKeyboardAnimation :IfYES,thenuseskeyboarddefaultanimation curve styletomove view, otherwiseusesUIViewAnimationOptionCurveEaseOut animation style.DefaultisYES.

特征

1)支持设备方向。

2)启用/禁用键盘消息时,需要设置enable的布尔值。

3)简单的集成。

4)作为一个textField/textView的AutoHandle UIToolbar需要设置enableAutoToolbar的布尔值。

5)可以由父视图AutoHandle UIToolbar或textField/textView,使用toolbarManageBehaviour枚举。

6)方便地添加上下和完成按钮键盘UIToolbar UIView类,自动使用enableAutoToolbar布尔值。

7)启用/禁用,下/上一个按钮类的方法,自动使用enableAutoToolbar布尔值。

8)键盘设置距离文本框使用keyboardDistanceFromTextField。

9)键盘触摸外面用shouldResignOnTouchOutside.禁用。

10)管理的框架时,UITextView高度太大,使用canAdjustTextView设置适合屏幕。

11)适用在UITableView/UIScrollView中的UITextField/UITextView

12)可以输入声音在点击“下/上一页/完成”时。

延伸阅读:

IQKeyboardManager

iOS自动处理键盘事件的第三方库:IQKeyboardManager

以上就介绍了iOS 键盘自适应(IQKeyboardManager)使用小结,包括了方面的内容,希望对IOS开发有兴趣的朋友有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容