国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋

2020-07-26 02:59:44
字體:
來源:轉載
供稿:網友

IOS TextFiled與TextView 鍵盤的收起以及處理鍵盤遮擋

  在iOS開發中,UITextFiled和UITextView是很常見的兩個控件,當我們設置好這兩個控件后,點擊文字輸入區域,系統會自動彈出鍵盤,但是如何收起鍵盤、點擊哪里收起鍵盤,以及在iPhone4中鍵盤彈出后遮擋輸入框怎么辦呢?

這篇文章將帶領大家解決:

1》點擊其他空白區域收起鍵盤
2》點擊鍵盤右下角的鍵收起鍵盤
3》處理鍵盤遮擋問題

一,點擊其他空白區域收起鍵盤

- (void)viewDidLoad {   [super viewDidLoad];    [self setUpForDismissKeyboard];   } 
#pragma mark - 回收任何空白區域鍵盤事件 - (void)setUpForDismissKeyboard {   NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];   UITapGestureRecognizer *singleTapGR =   [[UITapGestureRecognizer alloc] initWithTarget:self                       action:@selector(tapAnywhereToDismissKeyboard:)];   NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];   [nc addObserverForName:UIKeyboardWillShowNotification           object:nil            queue:mainQuene         usingBlock:^(NSNotification *note){           [self.view addGestureRecognizer:singleTapGR];         }];   [nc addObserverForName:UIKeyboardWillHideNotification           object:nil            queue:mainQuene         usingBlock:^(NSNotification *note){           [self.view removeGestureRecognizer:singleTapGR];         }]; }  - (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer {   //此method會將self.view里所有的subview的first responder都resign掉   [self.view endEditing:YES]; } 

 二,點擊鍵盤右下角的鍵收起鍵盤

#pragma mark - TextView 代理方法  -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {   if ([text isEqualToString:@"/n"]) {          [self.workLogTextView resignFirstResponder];          return NO;   }      return YES; } 

注意:需要遵守textView/textFiled的代理。改代碼是textView代理方法,若實際用到的是textFiled,只需調用textFiled的該類方法即可。

三,處理鍵盤遮擋問題

#pragma mark 鍵盤遮擋 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView {   if (self.userInfo.isPhone4) {     CGFloat offset_y = 0.f;     if (textView.tag == CALL_CONTENT_TEXTFIRLD) {       offset_y = 100.f;     }     CGPoint point = self.BackScrollView.contentOffset;     point = CGPointMake(point.x, offset_y);     [UIView animateWithDuration:0.25 animations:^{       self.BackScrollView.contentOffset = point;     }];   }   return YES; }   - (BOOL)textViewShouldEndEditing:(UITextView *)textView{   if (self.userInfo.isPhone4) {     CGFloat offset_y = 0.f;     if (textView.tag == CALL_CONTENT_TEXTFIRLD) {       offset_y = 100.f;     }     CGPoint point = self.BackScrollView.contentOffset;     point = CGPointMake(point.x, 0);     [UIView animateWithDuration:0.25 animations:^{       self.BackScrollView.contentOffset = point;     }];   }   return YES; } 

注意:需要遵守 UIScrollViewDelegate 和 textView/textFiled的代理。需要該頁面的父視圖是UIScrollView,才能保證彈出鍵盤時頁面向上移動,收起鍵盤時頁面向下移動。代碼中的self.BackScrollView就是對應的父視圖,使用時請替換掉。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福贡县| 定日县| 绩溪县| 屯昌县| 灯塔市| 寻甸| 肇州县| 仁布县| 淮阳县| 名山县| 双牌县| 陇南市| 滕州市| 福泉市| 乐陵市| 卢氏县| 汝阳县| 永德县| 祁阳县| 枝江市| 庆云县| 浑源县| 股票| 麻栗坡县| 五原县| 鄂托克旗| 安化县| 阿克| 四子王旗| 温州市| 革吉县| 台湾省| 北票市| 高邑县| 高邮市| 枣强县| 桑植县| 方正县| 隆安县| 澜沧| 连南|