麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > iOS > 正文

iOS實現聊天輸入框功能

2019-10-21 18:41:36
字體:
來源:轉載
供稿:網友

經常使用微信聊天,沒事兒就會想輸入框的實現過程,所以抽空,也實現了一個輸入框的功能;

ios,聊天,輸入框

ios,聊天,輸入框

經過封裝,使用就非常的簡單了,在需要的VC中,實現方法如下:

- (void)viewDidLoad {  [super viewDidLoad];  self.view.backgroundColor = [UIColor colorWithRed:0.92 green:0.92 blue:0.92 alpha:1.00];    self.keyView = [[DKSKeyboardView alloc] initWithFrame:CGRectMake(0, K_Height - 51, K_Width, 51)];  //設置代理方法  self.keyView.delegate = self;  [self.view addSubview:_keyView];}

主要就是上面的添加,此時輸入框就已經添加到當前的VC中;稍后會講到里面的代理方法的作用;

工程結構如下圖

ios,聊天,輸入框 

主要是紅色線標出的兩個類,結構比較簡單

 

類名 作用
DKSKeyboardView 布局表情按鈕、更多按鈕、輸入框
DKSTextView

設置輸入行數,輸入框內容變化時改變輸入款高度

 

DKSKeyboardView.h中的代碼如下:

#import @protocol DKSKeyboardDelegate @optional //非必實現的方法/** 點擊發(fā)送時輸入框內的文案 @param textStr 文案 */- (void)textViewContentText:(NSString *)textStr;/** 鍵盤的frame改變 */- (void)keyboardChangeFrameWithMinY:(CGFloat)minY;@end@interface DKSKeyboardView : UIView @property (nonatomic, weak) id delegate;@end

關于上面的兩個代理方法,由于文章篇幅問題,實現的過程可參考demo,里面有詳細的注釋;

在DKSKeyboardView.m中,以下列出少量重要代碼,主要是改變frame

1、點擊輸入框,鍵盤出現

//鍵盤將要出現- (void)keyboardWillShow:(NSNotification *)notification {  [self removeBottomViewFromSupview];  NSDictionary *userInfo = notification.userInfo;  CGRect endFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];  //獲取鍵盤的高度  self.keyboardHeight = endFrame.size.height;    //鍵盤的動畫時長  CGFloat duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];  [UIView animateWithDuration:duration delay:0 options:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue] animations:^{    self.frame = CGRectMake(0, endFrame.origin.y - self.backView.height - StatusNav_Height, K_Width, self.height);    [self changeTableViewFrame];  } completion:nil];}

2、鍵盤消失

- (void)keyboardWillHide:(NSNotification *)notification {  //如果是彈出了底部視圖時  if (self.moreClick || self.emojiClick) {    return;  }  [UIView animateWithDuration:0.25 animations:^{    self.frame = CGRectMake(0, K_Height - StatusNav_Height - self.backView.height, K_Width, self.backView.height);    [self changeTableViewFrame];  }];}

3、點擊更多按鈕

- (void)moreBtn:(UIButton *)btn {  self.emojiClick = NO; //主要是設置表情按鈕為未點擊狀態(tài)  if (self.moreClick == NO) {    self.moreClick = YES;    //回收鍵盤    [self.textView resignFirstResponder];    [self.emojiView removeFromSuperview];    self.emojiView = nil;    [self addSubview:self.moreView];    //改變更多、self的frame    [UIView animateWithDuration:0.25 animations:^{      self.moreView.frame = CGRectMake(0, self.backView.height, K_Width, bottomHeight);      self.frame = CGRectMake(0, K_Height - StatusNav_Height - self.backView.height - bottomHeight, K_Width, self.backView.height + bottomHeight);      [self changeTableViewFrame];    }];  } else { //再次點擊更多按鈕    //鍵盤彈起    [self.textView becomeFirstResponder];  }}

4、改變輸入框大小

- (void)changeFrame:(CGFloat)height {  CGRect frame = self.textView.frame;  frame.size.height = height;  self.textView.frame = frame; //改變輸入框的frame  //當輸入框大小改變時,改變backView的frame  self.backView.frame = CGRectMake(0, 0, K_Width, height + (viewMargin * 2));  self.frame = CGRectMake(0, K_Height - self.backView.height - self.keyboardHeight, K_Width, self.backView.height);  //改變更多按鈕、表情按鈕的位置  self.emojiBtn.frame = CGRectMake(viewMargin, self.backView.height - viewHeight - viewMargin, viewHeight, viewHeight);  self.moreBtn.frame = CGRectMake(self.textView.maxX + viewMargin, self.backView.height - viewHeight - viewMargin, viewHeight, viewHeight);  //主要是為了改變VC的view的frame  if (self.delegate && [self.delegate respondsToSelector:@selector(changeFrameWithMinY:)]) {    [self.delegate changeFrameWithMinY:self.minY];  }}

以上就是聊天輸入框的簡單實現,只是提供一個實現思路,如果在聊天界面中接入,還需要處理以下問題:

1、demo中沒有做tableViewCell的高度自適應;

2、輸入框文案較多時,tableViewCell可能會出現紊亂,此處沒有處理

demo中如果有任何問題,歡迎各位留言拍磚,小弟一定更正,共同學習;

GitHub地址

總結

以上所述是小編給大家介紹的iOS實現聊天輸入框功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品国产99久久久古代 | 成人午夜影院 | 精品国产一区二区三区久久久蜜月 | 性欧美在线视频 | 天天看天天摸天天操 | 国产精品久久久久久久久久iiiii | 欧美成人三级视频 | 亚洲一区二区三区精品在线观看 | 黄网站免费在线看 | 亚洲午夜国产 | 日韩午夜一区二区三区 | 毛片网站视频 | 一级大黄毛片 | 精品久久中文字幕 | 日韩黄色一级视频 | 色吧综合网 | 色就操 | 国产人成免费爽爽爽视频 | 欧美日本色 | 国产日产精品久久久久快鸭 | 亚洲第一成人av | 一级黄色在线观看 | 亚洲一区二区三区视频免费 | 日日做夜夜操 | 亚洲精品wwww| 黄色一级片免费在线观看 | 一级一级一级一级毛片 | 精品人伦一区二区三区蜜桃网站 | 亚洲片在线 | 国产成人高清在线观看 | 在线播放免费播放av片 | 久久久久国产成人精品亚洲午夜 | 欧美日韩在线播放 | 久久精品视频国产 | 国产精品视频亚洲 | 国产视频第一区 | 亚洲午夜久久久精品一区二区三区 | 欧美雌雄另类xxxxx | 羞羞电影在线观看www | 男女羞羞视频在线免费观看 | 欧美日韩国产成人在线观看 |