IOS 開發之-- textfield和textview,return鍵的改變,點擊return鍵


一,textfield的return鍵改變

方案1.改變鍵盤右下角的換行(enter)鍵為完成鍵,后實現代理方法鍵盤自動回彈

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 40)];
[self.view addSubview:textField];

textField.delegate = self;
textField.returnKeyType = UIReturnKeyDone;//改變為完成鍵,如果在項目中導入了YYText框架那么原生的就被替換掉了,變為returnKeyType = UIKeyboardTypeTwitter;

//實現UITextField代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    [textField resignFirstResponder];//取消第一響應者

    return YES;
}
/*textField.returnKeyType可以改變為很多樣式
typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    UIReturnKeyDefault,
    UIReturnKeyGo,
    UIReturnKeyGoogle,
    UIReturnKeyJoin,
    UIReturnKeyNext,
    UIReturnKeyRoute,
    UIReturnKeySearch,
    UIReturnKeySend,
    UIReturnKeyYahoo,
    UIReturnKeyDone,
    UIReturnKeyEmergencyCall,
    UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
};
*/

當然搜狗輸入法是自帶隱藏鍵盤的功能的,但是你不能保證每個用戶都裝有搜狗輸入法,這種方案也會改變搜狗鍵盤的右下角按鈕為完成鍵

方案2.點擊textField以外區域鍵盤回彈

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];
}

如果textField在tableView上還可以實現下面的tableView的代理方法

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [self.view endEditing:YES];
}

問題二:鍵盤鍵盤遮擋輸入框的的問題

解決方案

#pragma mark - textFieldDelegate(別忘了遵守協議設置代理)
- (void)textFieldDidBeginEditing:(UITextField *)textField {
   self.view.y = self.view.y - 216;  //216是輸入框在最底部時view移動的距離,具體移動多少距離,需要根據實際情況而定
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
  self.view.y = self.view.y + 216;
}

其實這里也可以自己寫個動畫!只要實現這兩個方法就可以了,一般的話,會在鍵盤彈出的時候,監聽事件,然后進行操作的!

 

同樣textview也可以實現點擊return鍵讓鍵盤隱藏的操作,代碼如下:

UITextFieldDelegate代理里面響應return鍵的回調:textFieldShouldReturn:。
但是 UITextView的代理UITextViewDelegate 里面並沒有這樣的回調。
但是有別的方法可以實現:
UITextViewDelegate里面有這樣一個代理函數:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

這個函數的最后一個參數text代表你每次輸入的的那個字,所以:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    if ([text isEqualToString:@"\n"]){ //判斷輸入的字是否是回車,即按下return
        //在這里做你響應return鍵的代碼
[self.textView resignFirstResponder];
return NO; //這里返回NO,就代表return鍵值失效,即頁面上按下return,不會出現換行,如果為yes,則輸入頁面會換行 } return YES; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM