【好程式員筆記分享】——純程式碼退出鍵盤,程式員筆記退出鍵盤

來源:互聯網
上載者:User

【好程式員筆記分享】——純程式碼退出鍵盤,程式員筆記退出鍵盤

iOS培訓------我的c語言筆記,期待與您交流!

 

關於iOS開發中鍵盤的退出,其實方法有很多中,而且筆者也也學會了不少,包括各種非純程式碼介面的退出。

但是最近開始著手項目的時候卻悶了,因為太多了,筆者確實知道有很多中方法能實現,而且令我影響最深的就是 EndEditing,但是因為即有textView,又有TextField而且他們各有不同的方法,雖然筆者現在搞懂了,但是不知道什麼時候又不記得 了,而且雖然感覺很簡單現在感覺很簡單的樣子,但是對於沒有真正弄清楚的人來說,也是一件痛苦的事情,哈哈!

 

其實這裡純程式碼介面推出如果用到Xib何Storyboard上面去還是一樣的思路操作,只不過筆者在開發的時候是在純程式碼介面遇到的問題,所以久以此命名。

下面大家介紹怎麼在純程式碼的情況下,退出(隱藏)鍵盤,Xib和StoryBoard情況下這裡就不解釋了(照此思路)。


一:UITextField


關於UITextFiel個人感覺又很多中方法,但是最近開發中我用的最多的也就是這兩種,根據和已經在公司上班的同行的聊天中,現在開發中用的最多的也就是這兩種,當然如果你還想去學習其他的方法或者更牛逼的方法,亦或者你想在一般的程式員面前裝一下逼那也是可以的。

1)點擊Return


關於點擊Return是要實現一個代理方法那就是
-(BOOL)textFieldShouldReturn:(UITextField*)textField
{
 

   [textField resignFirstResponder];
   return  YES;
}
但是在這之前你需要讓你想要退出鍵盤所在類中實現一個代理那就是UITextFieldDelegate:
@interface iCocosFBViewController()
實現了這個代理之後還沒有完,還要定義一個屬性:
@property (nonatomic, weak) UITextField*text;
最後在相應的啟動方法中遵守這個代理:
    _text.delegate = self;

那麼到這一切就OK了,在任意非方法行的實現檔案中輸入上面的代理方法就可以實現點擊Return退出鍵盤了。


2)觸控螢幕幕
這個觸控螢幕幕就簡單了,說先你需要定義一個屬性text(同上)。你想如果你要退出鍵盤,可定是當你摸一下螢幕小鍵盤就立刻退出,你不可能海讓他等個一輛秒把,什麼你會?那你就一直等下去把。
既然要立刻就退出,那麼在螢幕觸摸的代理方法中我們知道有一個方法撒撒Began方法:
對了就是他-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event我們只需要在這裡實現退出鍵盤的代碼就可以,這裡退出鍵盤的代碼貌似也有兩種,,但是你想你既然想退出鍵盤肯定是介紹編輯,除非你還有其他的地方要輸入,那就不叫退出鍵盤了,所以我們使用最多的就是直接End,在這個方法中使得文本直接End編輯,End。。End。。。還沒聽懂,算了直接給你看代碼,在看不懂還是回家種田把!
-(void)touchesBegan:(NSSet *)toucheswithEvent:(UIEvent *)event
{
   [self.text endEditing:YES];
}二:TextView關於TextView方法基本上和上面的一樣知識代理和代理方法不一樣,但是思路完全是一模一樣的,所以我就不做太多介紹。

1)Return
實現一個代理方法那就是
-(BOOL)textView:(UITextView *)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
    if ([text isEqualToString:@"\n"]) {
       [textView resignFirstResponder];
       return NO;
    }
    returnYES;
}
但是在這之前你需要讓你想要退出鍵盤所在類中實現一個代理那就是UITextViewDelegate:
@interface iCocosFBViewController()
實現了這個代理之後還沒有完,還要定義一個屬性:
@property (nonatomic, weak) UITextView*text;
最後在相應的啟動方法中遵守這個代理:
   _text.delegate = self;

。。。。。
。。


2)觸控螢幕幕
。。。。
。。。
。。


-(void)touchesBegan:(NSSet *)toucheswithEvent:(UIEvent *)event
{
   [self.text endEditing:YES];
}



最後總大家總結一點,那就是UITextField和UITextView退出鍵盤的相同點與不同點:
其實這兩個控制退出鍵盤的方法80%都是一樣的,比如如果你是要觸控螢幕幕退出那麼都是實現這個方法
-(void)touchesBegan:(NSSet *)toucheswithEvent:(UIEvent *)event
{
   [self.text endEditing:YES];
}

然後,然後就沒有然後了。。。。。。

關於實現代理方法不同的地方就是代理名,屬性名稱,還有就是代理方法名不同,只是UITextView這個代理方法中用到了一個匹配字串,\n,不要問這是撒,我也不知道。。。。左看右看還是沒看懂,\->n我猜可能是叫你去睡覺的意思!。
如果能夠匹配就剛好是TextField的方法,,,

。。。




當然還有一些觸摸背景退出的,這裡給個思路,直接在上面放一個UIButton設定成介面大小,並設定為透明,最後設定他的UserEnale或者userInteractionEnabled為NO,再實現點擊事件久可以。  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.