中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

iphone開發中給鍵盤加個隱藏工具條
來源:易賢網 閱讀:1194 次 日期:2014-11-14 14:21:16
溫馨提示:易賢網小編為您整理了“iphone開發中給鍵盤加個隱藏工具條”,方便廣大網友查閱!

因為iphone手機采用的觸摸涉及,本身沒有硬件鍵盤,一般都是點擊輸入框之后,彈出一個虛擬鍵盤出來,因此在iphone開發中,經常在完成編輯輸入之后,要寫程序代碼來關閉軟鍵盤的輸出,非常繁瑣,當然關閉軟鍵盤的方式有很多,比如放一個按鈕在底層,通過點擊屏幕的空白處來關閉鍵盤;也可以處理return鍵盤事件來關閉鍵盤,這些暫且不說,本文要分享的是一個鍵盤頂部工具條的類,通過這個工具條,可以很方便的關閉鍵盤,而且有上一項,下一項的輸入框切換,非常方便,效果請看下圖:

名單

類文件如下:

keyboardtopbar.h

//

// keyboardtopbar.h

//

//

// created by walkman on 10-12-2.

// copyright 2010 手機主題 all rights reserved.

//

#import

@interface keyboardtopbar : nsobject {

uitoolbar *view;//工具條

nsarray *textfields;//輸入框數組

bool allowshowpreandnext;//是否顯示上一項下一項

bool isinnavigationcontroller;//是否在導航視圖中

uibarbuttonitem *prevbuttonitem;//上一項按鈕

uibarbuttonitem *nextbuttonitem;//下一項按鈕

uibarbuttonitem *hiddenbuttonitem;//隱藏按鈕

uibarbuttonitem *spacebuttonitem;//空白按鈕

uitextfield *currenttextfield;//當前輸入框

}

@property(nonatomic,retain) uitoolbar *view;

-(id)init; //初始化

-(void)setallowshowpreandnext:(bool)isshow; //設置是否顯示上一項下一項

-(void)setisinnavigationcontroller:(bool)isbool; //設置是否在導航視圖中

-(void)settextfieldsarray:(nsarray *)array; //設置輸入框數組

-(void)showprevious; //顯示上一項

-(void)shownext; //顯示下一項

-(void)showbar:(uitextfield *)textfield; //顯示工具條

-(void)hiddenkeyboard; //隱藏鍵盤

@end

keyboardtopbar.m 文件

//

// keyboardtopbar.m

//

// created by walkman on 10-12-2.

// copyright 2010 手機主題下載 all rights reserved.

//

#import keyboardtopbar.h

@implementation keyboardtopbar

@synthesize view;

//初始化控件和變量

-(id)init{

if(self = [super init]) {

prevbuttonitem = [[uibarbuttonitem alloc] initwithtitle:@上一項 style:uibarbuttonitemstylebordered target:self action:@selector(showprevious)];

nextbuttonitem = [[uibarbuttonitem alloc] initwithtitle:@下一項 style:uibarbuttonitemstylebordered target:self action:@selector(shownext)];

hiddenbuttonitem = [[uibarbuttonitem alloc] initwithtitle:@隱藏鍵盤 style:uibarbuttonitemstylebordered target:self action:@selector(hiddenkeyboard)];

spacebuttonitem = [[uibarbuttonitem alloc]initwithbarbuttonsystemitem: uibarbuttonsystemitemflexiblespace target:nil action:nil];

view = [[uitoolbar alloc] initwithframe:cgrectmake(0,480,320,44)];

view.barstyle = uibarstyleblacktranslucent;

view.items = [nsarray arraywithobjects:prevbuttonitem,nextbuttonitem,spacebuttonitem,hiddenbuttonitem,nil];

allowshowpreandnext = yes;

textfields = nil;

isinnavigationcontroller = yes;

currenttextfield = nil;

}

return self;

}

//設置是否在導航視圖中

-(void)setisinnavigationcontroller:(bool)isbool{

isinnavigationcontroller = isbool;

}

//顯示上一項

-(void)showprevious{

if (textfields==nil) {

return;

}

nsinteger num = -1;

for (nsinteger i=0; i<[textfields count]; i++) {

if ([textfields objectatindex:i]==currenttextfield) {

num = i;

break;

}

}

if (num>0){

[[textfields objectatindex:num] resignfirstresponder];

[[textfields objectatindex:num-1 ] becomefirstresponder];

[self showbar:[textfields objectatindex:num-1]];

}

}

//顯示下一項

-(void)shownext{

if (textfields==nil) {

return;

}

nsinteger num = -1;

for (nsinteger i=0; i<[textfields count]; i++) {

if ([textfields objectatindex:i]==currenttextfield) {

num = i;

break;

}

}

if (num<[textfields count]-1){

[[textfields objectatindex:num] resignfirstresponder];

[[textfields objectatindex:num+1] becomefirstresponder];

[self showbar:[textfields objectatindex:num+1]];

}

}

//顯示工具條

-(void)showbar:(uitextfield *)textfield{

currenttextfield = textfield;

if (allowshowpreandnext) {

[view setitems:[nsarray arraywithobjects:prevbuttonitem,nextbuttonitem,spacebuttonitem,hiddenbuttonitem,nil]];

}

else {

[view setitems:[nsarray arraywithobjects:spacebuttonitem,hiddenbuttonitem,nil]];

}

if (textfields==nil) {

prevbuttonitem.enabled = no;

nextbuttonitem.enabled = no;

}

else {

nsinteger num = -1;

for (nsinteger i=0; i<[textfields count]; i++) {

if ([textfields objectatindex:i]==currenttextfield) {

num = i;

break;

}

}

if (num>0) {

prevbuttonitem.enabled = yes;

}

else {

prevbuttonitem.enabled = no;

}

if (num<[textfields count]-1) {

nextbuttonitem.enabled = yes;

}

else {

nextbuttonitem.enabled = no;

}

}

[uiview beginanimations:nil context:nil];

[uiview setanimationduration:0.3];

if (isinnavigationcontroller) {

view.frame = cgrectmake(0, 201-40, 320, 44);

}

else {

view.frame = cgrectmake(0, 201, 320, 44);

}

[uiview commitanimations];

}

//設置輸入框數組

-(void)settextfieldsarray:(nsarray *)array{

textfields = array;

}

//設置是否顯示上一項和下一項按鈕

-(void)setallowshowpreandnext:(bool)isshow{

allowshowpreandnext = isshow;

}

//隱藏鍵盤和工具條

-(void)hiddenkeyboard{

if (currenttextfield!=nil) {

[currenttextfield resignfirstresponder];

}

[uiview beginanimations:nil context:nil];

[uiview setanimationduration:0.3];

view.frame = cgrectmake(0, 480, 320, 44);

[uiview commitanimations];

}

//釋放

- (void)dealloc {

[view release];

[textfields release];

[prevbuttonitem release];

[nextbuttonitem release];

[hiddenbuttonitem release];

[currenttextfield release];

[spacebuttonitem release];

[super dealloc];

}

@end

下面是使用這個類的代碼:

在uiviewcontroller頭文件中申明,并定義,并且實現uitextfielddelegate代理

比如:在keyboardtopbarviewcontroller.h文件,我是這樣寫的

//

// keyboardtopbarviewcontroller.h

// keyboardtopbar

//

// created by walkman on 10-12-2.

// copyright 2010 手機主題all rights reserved.

//

#import

@class keyboardtopbar;

@interface keyboardtopbarviewcontroller : uiviewcontroller {

uitableview *tableview;

nsmutablearray *cellstextarray;

nsmutablearray *editfieldarray;

uibutton *btnreg;

keyboardtopbar *keyboardbar;

cgrect rect;

}

在在uiviewcontroller的m文件中,初始化,并添加到view中

- (void)viewdidload {

[super viewdidload];

......

//其中editfieldarray 是uitextfield數組,在上面已經初始化,并添加了n個uitextfield在里面。

//具體的代碼請下載附件查看,這里只貼出了相關的代碼

keyboardbar = [[keyboardtopbar alloc]init];

[keyboardbar setallowshowpreandnext:yes];

[keyboardbar setisinnavigationcontroller:no];

[keyboardbar settextfieldsarray:editfieldarray];

[self.view addsubview:keyboardbar.view];

}

//這個方法是uitextfielddelegate代理中的方法,表示輸入框開始處于編輯狀態。

- (void)textfielddidbeginediting:(uitextfield *)textfield{

[keyboardbar showbar:textfield]; //顯示工具條

......

}

ok了,調用起來還是很方便吧,當然,這個類還有需要完善的地方,比如,在執行了hiddenkeyboard方法隱藏了鍵盤和工具條之后,如果在調用頁面時候需要再做進一步處理,目前是無法實現的,等下一個版本中再加入一個delegate類。

更多信息請查看IT技術專欄

更多信息請查看技術文章
易賢網手機網站地址:iphone開發中給鍵盤加個隱藏工具條
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
99精品国产高清一区二区| 国产精品一区二区三区四区五区| 欧美日韩国产经典色站一区二区三区| 亚洲乱亚洲高清| 在线播放日韩| 中文在线资源观看网站视频免费不卡 | 国产一区二区三区久久久久久久久| 在线成人激情黄色| 欧美中文日韩| 欧美午夜www高清视频| 合欧美一区二区三区| 久久久999国产| 激情六月综合| 欧美精品日韩一区| 一区二区三区欧美视频| 欧美男人的天堂| 亚洲视频中文字幕| 国产精品视频你懂的| 蜜桃精品久久久久久久免费影院| 亚洲人成网站精品片在线观看| 国产精品高潮呻吟久久av无限 | 国产精品久久久久久久午夜| 欧美专区一区二区三区| 一区二区av在线| 亚洲国产精品久久久久婷婷老年| 国产精品视频在线观看| 欧美久久一区| 欧美成人一区二区三区在线观看| 洋洋av久久久久久久一区| 国内精品视频666| 国产精品美女999| 欧美日本中文字幕| 久久成人精品电影| 性色av一区二区三区红粉影视| 一本一道久久综合狠狠老精东影业 | 国产精品网站在线| 欧美日韩另类在线| 欧美日韩亚洲一区| 蜜臀av性久久久久蜜臀aⅴ| 一区二区三区精品| 亚洲一区二区视频| 一二美女精品欧洲| 亚洲三级性片| 一区二区三区你懂的| 在线视频亚洲欧美| 亚洲美洲欧洲综合国产一区| 亚洲精品九九| 亚洲日本中文字幕| 99精品国产热久久91蜜凸| 亚洲欧洲另类国产综合| 中文一区二区| 欧美一区二区三区免费看| 久久精品国产在热久久| 美女视频黄a大片欧美| 欧美日韩精品在线观看| 国产婷婷色一区二区三区在线| 一区在线播放视频| 亚洲婷婷在线| 免费看亚洲片| 国产日韩精品入口| 亚洲精选久久| 久久综合国产精品| 国产农村妇女毛片精品久久莱园子| 国产亚洲一区在线| 亚洲一区二区在线播放| 久久一区二区三区av| 国产精品人成在线观看免费| 在线观看视频亚洲| 欧美在线观看天堂一区二区三区 | 欧美一区二区在线播放| 欧美黄色影院| 亚洲福利电影| 欧美高清视频在线| 久久精品水蜜桃av综合天堂| 久久夜色撩人精品| 韩日精品在线| 久久精品一区二区三区不卡牛牛 | 久久久精品国产99久久精品芒果| 欧美 日韩 国产 一区| 国产拍揄自揄精品视频麻豆| 日韩午夜剧场| 欧美特黄一级| 中文精品视频一区二区在线观看| 欧美激情综合色综合啪啪| 亚洲国产女人aaa毛片在线| 久久综合久久久| 亚洲精品一区二区三区不| 欧美韩日一区二区| 日韩亚洲欧美高清| 国产精品免费一区二区三区在线观看 | 欧美日韩一区二区三区四区在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一级二级| 国产欧美日韩综合精品二区| 亚洲一区3d动漫同人无遮挡| 国产精品亚洲一区| 久久在线观看视频| 欧美在线视频一区二区| 欧美国产精品v| 亚洲日韩第九十九页| 欧美日韩国产成人| 久久精品国产综合精品| 亚洲精品免费一二三区| 国产精品视频99| 欧美国产极速在线| 欧美中在线观看| aⅴ色国产欧美| 伊人精品成人久久综合软件| 欧美午夜三级| 欧美大胆人体视频| 久久疯狂做爰流白浆xx| 亚洲视频香蕉人妖| 亚洲毛片在线免费观看| 精品粉嫩aⅴ一区二区三区四区| 欧美午夜理伦三级在线观看| 麻豆乱码国产一区二区三区| 欧美亚洲综合网| 亚洲精品网址在线观看| 在线观看日韩av先锋影音电影院| 欧美香蕉视频| 欧美特黄一区| 国产精品久久久久影院亚瑟| 欧美日韩成人在线观看| 欧美国产激情二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 一本色道88久久加勒比精品| 亚洲日本欧美日韩高观看| 影音先锋中文字幕一区二区| 韩国一区电影| 在线观看亚洲视频| 亚洲日本中文字幕| 这里只有视频精品| 午夜精品福利在线观看| 久久久91精品国产一区二区三区| 久久成人综合视频| 欧美成人精品高清在线播放| 欧美精品激情在线| 国产精品美女久久久免费| 国产精品婷婷午夜在线观看| 国产伦精品免费视频| 亚洲成色www久久网站| 一本大道av伊人久久综合| 亚洲综合导航| 久久国产天堂福利天堂| 伊甸园精品99久久久久久| 国产精品videosex极品| 国产日韩欧美综合一区| 在线看欧美日韩| 夜夜嗨一区二区| 久久人91精品久久久久久不卡 | 亚洲网站在线播放| 久久电影一区| 国产精品久久久久久超碰 | 国产日韩欧美成人| 亚洲国内在线| 欧美一区二区性| 欧美日韩一二三四五区| 国产手机视频精品| 一区二区久久| 快射av在线播放一区| 国产三级欧美三级日产三级99| 亚洲每日更新| 欧美国产精品劲爆| 在线视频免费在线观看一区二区| 久久久7777| 国产午夜亚洲精品理论片色戒| 亚洲免费中文| 国产精品一二三| 午夜影院日韩| 国产欧美一区二区精品性| 亚洲在线免费视频| 国产精品一区免费观看| 亚洲夜晚福利在线观看| 国产精品久久久久av免费| 99这里只有精品| 欧美日韩国产黄| 一区二区三区欧美成人| 欧美日韩国产一区| 亚洲图片你懂的| 国产午夜精品久久久久久免费视| 校园激情久久| 一区在线播放视频| 欧美区高清在线| 亚洲欧美日韩一区二区| 国模私拍一区二区三区| 久久一区免费| 一区二区欧美日韩视频| 国精品一区二区三区| 欧美高清在线视频观看不卡| 91久久夜色精品国产九色| 欧美午夜精品久久久久久人妖| 亚洲午夜免费视频| 精品99一区二区| 亚洲一区二区三区三| 欧美日韩在线播放| 欧美在线视频全部完| 亚洲美女福利视频网站| 国产精品一区毛片| 欧美日本久久| 久久久夜色精品亚洲|