h5如何動態獲取鍵盤高度 動態獲取鍵盤高度

2021-10-13 07:58:16 字數 2642 閱讀 6098

//在遇到有輸入的情況下。由於現在鍵盤的高度是動態變化的。中文輸入與英文輸入時高度不同。所以輸入框的位置也要做出相應的變化

#pragma mark - keyboardhight

[self registerforkeyboardnotifications];

[[nsnotificationcenter defaultcenter] removeobserver:self];

- (void)registerforkeyboardnotifications

//使用nsnotificationcenter 鍵盤出現時

[[nsnotificationcenter defaultcenter] addobserver:self

selector:@selector(keyboardwasshown:)

name:uikeyboarddidshownotification object:nil];

//使用nsnotificationcenter 鍵盤隱藏時

[[nsnotificationcenter defaultcenter] addobserver:self

selector:@selector(keyboardwillbehidden:)

name:uikeyboardwillhidenotification object:nil];

//實現當鍵盤出現的時候計算鍵盤的高度大小。用於輸入框顯示位置

- (void)keyboardwasshown:(nsnotification*)anotification

nsdictionary* info = [anotification userinfo];

//kbsize即為鍵盤尺寸 (有width, height)

cgsize kbsize = [[info objectforkey:uikeyboardframeenduserinfokey] cgrectvalue].size;//得到鍵盤的高度

nslog(@"hight_hitht:%f",kbsize.height);

if(kbsize.height == 216)

keyboardhight = 0;

else

keyboardhight = 36; //252 - 216 系統鍵盤的兩個不同高度

//輸入框位置動畫載入

[self begainmoveupanimation:keyboardhight];

//當鍵盤隱藏的時候

- (void)keyboardwillbehidden:(nsnotification*)anotification

//do something

//(textview) 當鍵盤開始輸入前。時行計算與動畫載入

-(void)textviewdidbeginediting:(uitextview *)textview

nslog(@"gegin animation");

sendmsgtextview =textview;

resultcommunitytableview.frame = cgrectmake(0, 36, 320, 150);

//動畫載入

[self begainmoveupanimation:0.0 ];

//關閉鍵盤(textview) 換行時。隱藏鍵盤

-(bool)textview:(uitextview *)textview shouldchangetextinrange:(nsrange)range replacementtext:(nsstring *)text

resultcommunitytableview.frame = cgrectmake(0, 36, 320, 376);

if ([text isequaltostring:@"\n"]) {

[textview resignfirstresponder];

return no;

return yes;

//輸入結束時呼叫動畫(把按鍵。背景。輸入框都移下去)

-(void)textviewdidendediting:(uitextview *)textview

nslog(@"tabtabtab");

[self endeditanimation];

//釋放

[[nsnotificationcenter defaultcenter] removeobserver:self name:uikeyboardwillshownotification object:nil];

[[nsnotificationcenter defaultcenter] removeobserver:self name:uikeyboardwillhidenotification object:nil];

//判斷當前輸入法

-(void)textviewdidchangeselection:(uitextview *)textview

nslog(@"wewe:%@",[[uitextinputmode currentinputmode] primarylanguage]);

if ([[uitextinputmode currentinputmode] primarylanguage] == @"en-us") {

nslog(@"en-us");

else

nslog(@"zh-hans");

動態獲取View的高度

設定動態復view的高度寬度有以下兩制種方法 1.getheight 方法這個方法必須要在view呼叫了onlayout方法後才能獲得,為了監聽onlayout方法,可以獲得viewtree觀察者上的 來實現,具體 為 viewtreeobserver viewtreeobserver bottom...

iPhone 動態獲取UILabel的高度和寬度

在使用uilabel存放字串時,經常需要獲取label的長寬資料,本文列出了部分常用的計算方法。1.獲取寬度,獲取字串不折行單行顯示時所需要的長度 cgsize titlesize astring sizewithfont fontconstrainedtosize cgsizemake maxfl...

iPhone 動態獲取UILabel的高度和寬度

在使用uilabel存放字串時,經常需要獲取label的長寬資料,本文列出了部分常用的計算方法。1.獲取寬度,獲取字串不折行單行顯示時所需要的長度 cgsize titlesize astring sizewithfont font constrainedtosize cgsizemake maxf...