1. 程式人生 > >iOS學習之鍵盤設定以及IQKeyboardManager

iOS學習之鍵盤設定以及IQKeyboardManager

在iOS開發中常常出現鍵盤彈起遮擋UITextField/UITextView等情況,或者需要對鍵盤設定工具條。

一、使用監聽鍵盤彈出來去除檢視遮擋,如下

//監控鍵盤事件通知
[[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>

二、IQKeyboardManager是一款十分實用的工具,不需要額外的設定,使用IQKeyboardManager的你只需要將原始檔新增到專案,就可以使用相關功能,IQKeyboardManager支援Objective-C和swift。

也可以用Cocoapod安裝

1)、IQKeyboardManager的基本功能

a、當鍵盤遮擋輸入文字框的時候,自動上移View,使被遮擋的部分自動處於鍵盤的上方。

   b、匯入IQKeyboardManager後,預設所有的頁面都有了這個功能

   c、在鍵盤上會自動新增一個工具條,工具條上有左箭頭和右箭頭用來切換的輸入文字框,還有完成按鈕用來收回鍵盤。

  d、點選空白部分鍵盤迴收等


(2)、IQKeyboardManager的基本設定

可以在-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中設定

IQKeyboardManager *manager = [IQKeyboardManagersharedManager];
    manager.enable =YES;// 控制整個功能是否啟用。
    manager.shouldResignOnTouchOutside =YES;//控制點選背景是否收起鍵盤
    manager.shouldToolbarUsesTextFieldTintColor =YES;//控制鍵盤上的工具條文字顏色是否使用者自定義
    manager.toolbarDoneBarButtonItemText 
[email protected]
"完成";//將右邊Done改成完成 manager.enableAutoToolbar =YES;// 控制是否顯示鍵盤上的工具條 manager.toolbarManageBehaviour =IQAutoToolbarByTag;//最新版的設定鍵盤的returnKey的關鍵字 ,可以點選鍵盤上的next鍵,自動跳轉到下一個輸入框,最後一個輸入框點選完成,自動收起鍵盤。

擴充套件:

#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;
}


如果檢視有導航欄,不想上移View時,UINavigationBar消失:

在UIViewController中

-(void)loadView{
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = scrollView;
}


相關推薦

iOS學習鍵盤設定以及IQKeyboardManager

在iOS開發中常常出現鍵盤彈起遮擋UITextField/UITextView等情況,或者需要對鍵盤設定工具條。 一、使用監聽鍵盤彈出來去除檢視遮擋,如下 //監控鍵盤事件通知 [[NSNoti

ios學習plist檔案的讀寫以及儲存位置的探究

       俗話說好記性不如爛筆頭,是很有道理的,許多東西時間長了以後就有點模糊,特別是程式碼這個東西,特別容易忘記,需要不斷的使用,反覆咀嚼,消化,還是記一下比較好,同時也解決了當時的心頭疑惑,在此記之,有不妥之處,歡迎批評指正!    十分感謝“榮芳志專欄”部落格,對

ios學習旅---指針也不難

ror 邏輯 初始化 維數 賦值運算 等價 格式 沒有 本質 1、認識指針#include <stdio.h> //基本數據類型作為函數參數傳遞是值傳遞 //void moveFront(int x ,int y) //{ // x = x + 2;

ios開發--鍵盤的監聽

efault key nil self. transform blog mar form owa 監聽鍵盤的彈出,讓整個頁面向上移動,比較簡單,僅做記錄使用: 代碼如下: // 監聽鍵盤 [[NSNotificationCenter defaultCenter]

ios學習旅--oc對象的關系

pos 其它 對象 found self 面向對象設計原則 ipa 匿名 nsstring 1.匿名對象:就是沒有名字對象 1、匿名對象僅用一次 使用場景: 1、當我們僅僅要調用一個對象的某個方法一次的時候能夠使用匿名對象 2

vim學習鍵盤布局

vim學習打印出vim鍵盤布局,鞏固學習vim學習之鍵盤布局

linux基礎學習軟體安裝以及常用命令

  linux基礎學習之軟體安裝以及常用命令 呼叫中央倉庫: yum install wget     然後下載nodejs: wget https://nodejs.org/dist/v10.14.2/node-v10.14.2-

linux基礎學習軟體安裝以及常用命令(三)

    新增和檢視使用者: [[email protected] ~]# useradd anderson [[email protected] ~]# cat /etc/passwd 顯示如下: [[email protected

Python 學習Anaconda 設定預設開啟chrome 瀏覽器

筆者遇到的問題如何設定jupyter notebook 開啟chrome 瀏覽器 1、開啟anaconda prompt 2、輸入jupyter notebook --generate-config 3、顯示出jupyter_notebook_config.py 檔案所在目錄。找到這個檔案,用記事本

elasticsearch學習通過設定搜尋邊界實現精確匹配欄位

GET tmdb/_search { "_source": "name_exact_match", "query": { "bool": { "should": [ { "constant_sco

ios學習 關於Certificate、Provisioning Profile、App ID的介紹及其之間的關係

剛接觸iOS開發的人難免會對蘋果的各種證書、配置檔案等不甚瞭解,可能你按照網上的教程一步一步的成功申請了真機除錯,但是還是對其中的緣由一知半解。這篇文章就對Certificate、Provisioning Profile等做個總結。  1.概念介紹 如果你擁有一個開發者賬戶的話,在iOS Dev Cente

Android學習介面設定

最近實訓正在學習Android程式編寫,以下內容主要是自己在課堂上所學東西的總結。 本文采用eclipse編寫Android應用程式,今天從最基礎的介面設計開始記錄。 1.新建檔案 在選單欄找到File->new->Android Application Project,如下圖所示

iOS學習Swift史上最全第三方輪子大全

@SwiftLanguage 更新至 2016-2-1,最近新收錄 Graph, Localize-Swift, Cuckoo, Gecco, AudioKit, vapor, Every.swift 等 7 個,合計已收錄 297 個。詳見本文件。 工具類 專案 開

allegro學習如何設定過電阻的等長線規則

過電阻的等長線設定第一步,紅色圈圈內的圖示就是規則管理器,點選開啟我們可以看到這樣噠:等長線規則在Relative Propagation Delay(相對傳播延時)我們發現所有的網路屬性都是Net,如

IOS學習——向cell表格裡面填資料

向表格中增加資料 方式一 : reloadData 重新整理 tableView 方式二 : insertRowsAtIndexPath 只更新一部分  注意:沒有多執行緒是第二種方式效能低

ios 學習 Simple Calculator Application

// // ViewController.h // ocTest // // Created by Hu Li on 2018/12/30. // Copyright © 2018 Hu Li. All rights reserved. // #import <UIKit/UIKit.h

IOS學習常見問題】 Program License Agreement updated

遇到問題: 因為要上架一款新的app,就需要在蘋果開發者中心(https://developer.apple.com/account/ios/certificate/)去申請釋出證書,於是登陸進去,就提示Program License Agreement up

IOS學習WebView載入本地HTML程式碼或網路資源

新建SingleViewApplication應用,命名WebViewSample, 在storyboard中拖3個Button,定義動作,再拖一個WebView,然後建立他們的弱連結輸出口,得到如下的程式碼: #import <UIKit/UIKit.h>

29.VUE學習--鍵盤事件.鍵盤修飾符的例項講解

鍵盤事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--<script src="https://cdn.jsdelivr.net/npm/vu

29.VUE學習--鍵盤事件.鍵盤修飾符的實例講解

this bubuko ont ctype key dcm scrip mage app 鍵盤事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&