協議,然后就可以在ViewController.m中使用。比如我們本例中對t1這個文本框對象設置了代理,代理self">

多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 【iOS開發-16】UITextField協議的用法,鍵盤的隱藏,以及視圖隨著鍵盤的出現隱藏而上下調整位置

【iOS開發-16】UITextField協議的用法,鍵盤的隱藏,以及視圖隨著鍵盤的出現隱藏而上下調整位置

來源:程序員人生   發布時間:2014-10-06 08:00:01 閱讀次數:3441次

(1)有很多對于文本框的編輯和結束編輯的設置需要用到文本框協議,即UITextFieldDelegate:先在AppDelegate.h中加入<UITextFieldDelegate>協議,然后就可以在ViewController.m中使用。比如我們本例中對t1這個文本框對象設置了代理,代理self,即本視圖控制器類,所以在本類中使用的方法都會影響t1,即可以設置t1。(最后幾句為猜測,后續繼續學習看是否如此)。


(2)當然真正的幾個函數其實沒甚么意思,無非就是是否允許編輯和結束編輯,如果真的“編輯了”和“結束編輯了”可以給它設置一個操作等等,以及是否允許清除。


(3)其中最重要的可能就是在textFieldShouldReturn中設置按Return后隱藏鍵盤,這個方法是[t1 resignFirstResponder];這個很實用。


(4)緊接著,我們實現了一個隨著鍵盤出現和隱藏,如果有被其遮蓋的視圖,我們也隨之調整這些被遮蓋的視圖位置(如本例的按鈕)。這里面用到一個通知,當然我們也順便熟悉了一下UIView里面的animateWithDuration動畫。


#import "ViewController.h" @interface ViewController () @end @implementation ViewController { UITextField *t1; UIButton *btn1; } - (void)viewDidLoad { //設置兩個文本框 t1=[[UITextField alloc]init]; UITextField *t2=[[UITextField alloc]init]; t1.frame=CGRectMake(10, 30, 300, 30); t2.frame=CGRectMake(10, 80, 300, 30); t1.borderStyle=UITextBorderStyleRoundedRect; t2.borderStyle=UITextBorderStyleRoundedRect; t1.clearButtonMode=UITextFieldViewModeUnlessEditing; //把t1的代理設置為self,即我們現在正在書寫正在用的這個類(文件) t1.delegate=self; //我們后增加一個UIControl對象,覆蓋整個iPhone6模擬屏幕,設置大一點沒關系 UIControl *control1=[[UIControl alloc]init]; control1.frame=CGRectMake(0, 0, 500, 800); [self.view addSubview:control1]; control1.backgroundColor=[UIColor redColor]; //我們發現雖然control1是后加載的,但是貌似沒有遮擋住之前加載的文本框 //而且就算我把control1弄到最上面,仍然不遮擋(在低版本中是遮擋的需要調整順序),奇怪,智能了嗎這是? [self.view bringSubviewToFront:control1]; [control1 addTarget:self action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:t1]; [self.view addSubview:t2]; //創建一個按鈕,隨著鍵盤上下而上下,使得不被鍵盤遮擋 //btn1需要是全局變量,因為在下面需要調用它來改變它的位置,上下移動 btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect]; btn1.frame=CGRectMake(10, 500, 300, 30); btn1.backgroundColor=[UIColor whiteColor]; [btn1 setTitle:@"點我啊" forState:UIControlStateNormal]; [self.view addSubview:btn1]; //需要設置一個通知,獲取系統的鍵盤顯示和隱藏消息,然后做出位置改變的操作 //這里的UIKeyboardWillShowNotification時系統自帶的 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardShow) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHide) name:UIKeyboardWillHideNotification object:nil]; [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } //點擊Control1時(相對于用戶就是點擊其他地方),鍵盤隱藏 -(void)hideKeyboard{ [t1 resignFirstResponder]; } //鍵盤顯示的時候,按鈕向上跑,不會被遮蓋 -(void)keyboardShow{ btn1.frame=CGRectMake(10, 180, 300, 30); } //鍵盤隱藏是,按鈕向下回到原先的位置 //這里面嘗試一個動畫,和沒有動畫,直接確定位置是一個效果,差不多 -(void)keyboardHide{ [UIView animateWithDuration:0.25 animations:^{ btn1.frame=CGRectMake(10, 500, 300, 30); }completion:^(BOOL finished){ }]; } //設置文本框是否可以編輯,NO的話就不可編輯,默認是YES - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ return YES; } //已經編輯時的方法 - (void)textFieldDidBeginEditing:(UITextField *)textField{ NSLog(@"已經編輯中"); } //是否可以結束編輯,如果是NO的話,那么你指向其他地方,這個光標還在這里跳動編輯,默認是YES - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ return YES; } //編輯結束時的方法 - (void)textFieldDidEndEditing:(UITextField *)textField{ NSLog(@"編輯結束了"); } //是否可清除。如果是NO的話,我們結束編輯時雖然有叉叉X,但是點擊無法清除 //但我們可以手動清除,即雖然設置為NO,但同時設置它的文本為空,如下 //區別在于,后者,我們編輯其他文本框時點擊它清除,這個時候光標還是原來文本框中,不會跳到這個清除的文本框里 - (BOOL)textFieldShouldClear:(UITextField *)textField{ t1.text=@""; return NO; } //是否可點擊return鍵,NO設置貌似暫時無法看到效果。 //我們用得比較多得功能是按return后隱藏鍵盤 - (BOOL)textFieldShouldReturn:(UITextField *)textField{ //取消第一響應者,就是結束輸入病隱藏鍵盤 [t1 resignFirstResponder]; return YES; } @end

截個圖:


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩在线一区高清在线 | α片毛片免费看 | 91成人福利| 免费观看黄色的网站 | 校园春色 自拍偷拍 | 综合网久久 | 日本乱性 | 在线看www| 久草在线免费色站 | 久夜色精品国产一区二区三区 | 91性视频| 伊人手机在线观看 | 麻豆高清视频在线观看 | 欧美国产成人免费观看永久视频 | 亚洲天码中文字幕第一页 | 美国免费毛片 | 欧美精品18videosex巨大 | 欧美自拍偷拍视频 | 国产一精品一aⅴ一免费 | 国产免费看网站v片不遮挡 国产免费全部免费观看 | 日韩欧美亚洲国产 | 国产精品一区高清在线观看 | 亚洲午夜精品久久久久 | 欧洲亚洲综合一区二区三区 | 叼嘿在线观看 | 亚洲春色在线观看 | 国产精品中文字幕在线观看 | 秋霞伊人网 | 国产一区二区在线视频播放 | 国产精品视频第一区二区三区 | 亚洲三级久久 | 成人区精品一区二区不卡亚洲 | 欧美日韩国产综合在线 | 最近最全中文字幕 | 亚洲精品www久久久久久久软件 | 性欧美大战久久久久久久 | 欧美毛片视频 | 免费观看老外特级毛片 | 欧美第一色 | 日本高清免费毛片久久看 | 日韩男人天堂 |