鍵盤問題可能是每個(gè)項(xiàng)目中都可能遇到的問題稚新,如果輸入框位于屏幕的底部襟沮,彈起的鍵盤很可能擋住輸入框锥惋,導(dǎo)致用戶就看不到輸入結(jié)果(吐槽一下網(wǎng)易將軍令->游戲助手->游戲精靈)就是這樣,問個(gè)問題自己都不知道輸入的是啥开伏,不知道輸入的對(duì)不對(duì)膀跌,體驗(yàn)較差。以前遇到這種問題的時(shí)候一直糾結(jié)怎么處理固灵,設(shè)置來設(shè)置去的捅伤,很是麻煩,自己也搞暈了怎虫,后來在地鐵上無事看一個(gè)微信公眾號(hào)推送技術(shù)文章的時(shí)候暑认,發(fā)現(xiàn)了這個(gè)庫,IQKeyboardManager大审。它是iOS中解決鍵盤彈起遮擋UITextField或者UITextView的一種很犀利的工具蘸际,就像文章說的那樣,零行代碼解決鍵盤問題徒扶。一試之下果然好用粮彤,于是一股腦將自己的項(xiàng)目都添加上了。
swift 也是支持的姜骡,我這里還是用的OC导坟。
安裝的時(shí)候只需要pod 一下就可以
pod 'IQKeyboardManager'
使用(幾個(gè)用到的方法)
- 在appdelegate的 didFinishLaunchingWithOptions方法中設(shè)置全局是否開啟;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//鍵盤
[IQKeyboardManager sharedManager].enable = YES; //默認(rèn)值為NO.
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;//不顯示工具條
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;//點(diǎn)空白處收回
}
- 如果在哪里不想用這個(gè)的話圈澈,只需要在viewWillAppear方法里面設(shè)置NO,在viewWillDisAppear中設(shè)置回YES 即可惫周;
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[IQKeyboardManager sharedManager].enable = NO;
}
//注意,這個(gè)一定要設(shè)康栈,不然會(huì)出奇葩的問題递递,有些地方也不可用喷橙,也就是出個(gè)這個(gè)view要重新設(shè)置回去
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[IQKeyboardManager sharedManager].enable = YES;
}
- 點(diǎn)擊旁邊的空白處收起鍵盤;這里是控制單個(gè)頁面,上面的是全局的
- (void)viewDidLoad {
[super viewDidLoad];
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
}
-
如果使用的是storybord或者Xib的話登舞,class改成UIScrollVeiw即可(被坑過)贰逾;
常用的屬性
- 輸入框到鍵盤的距離,默認(rèn)是10px菠秒。修改的話疙剑,等號(hào)后面的值自己定,但是10感覺最合適了践叠, 根據(jù)個(gè)人習(xí)慣吧言缤。。禁灼。
[IQKeyboardManager sharedManager].keyboardDistanceFromTextField = 0.0f;
- 防止上滑過渡轧简,離得太遠(yuǎn);
[IQKeyboardManager sharedManager].preventShowingBottomBlankSpace = NO;
當(dāng)然這個(gè)框架還有很多用得到的 地方匾二,不過目前就用了這一點(diǎn)點(diǎn),先記錄下來拳芙,以后用到再補(bǔ)充察藐。