iOSはチャット入力ボックス機能を実現します。
WeChatチャットをよく使います。暇があれば、入力ボックスの実現過程を入力したいです。だから、時間を割いて、入力ボックスの機能も実現しました。
パッケージを通して、使用は非常に簡単です。必要なVCの中で、実現方法は以下の通りです。
工事の構造は下図のようです。
主に赤い線が示す二つの種類で、構造は比較的簡単です。
クラス名
作用
DKSKeyboardView
レイアウト表情ボタン、詳細ボタン、入力ボックス
DKSTextView
入力行数を設定し、入力枠の内容が変化した場合は入力項の高さを変更します。
DKSKeyboardView.hのコードは以下の通りです。
DKSKeyboardView.mの中で、以下に重要なコードを少量出します。主にframeを変えます。
1、入力ボックスをクリックして、キーボードが現れます。
1、demoの中でtable Viewcellの高度適応をしていません。
2、入力ボックスの文案が多い場合、テーブルビューセルが乱れている可能性があります。ここでは処理していません。
デモの中に何か問題があったら、皆さんのメッセージを歓迎します。弟はきっと訂正して、一緒に勉強します。
GitHubアドレス
締め括りをつける
以上は小编でご绍介した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に添加されました。後で中の代理方法の役割を説明します。工事の構造は下図のようです。
主に赤い線が示す二つの種類で、構造は比較的簡単です。
クラス名
作用
DKSKeyboardView
レイアウト表情ボタン、詳細ボタン、入力ボックス
DKSTextView
入力行数を設定し、入力枠の内容が変化した場合は入力項の高さを変更します。
DKSKeyboardView.hのコードは以下の通りです。
#import @protocol DKSKeyboardDelegate @optional //
/**
@param textStr
*/
- (void)textViewContentText:(NSString *)textStr;
/**
frame
*/
- (void)keyboardChangeFrameWithMinY:(CGFloat)minY;
@end
@interface DKSKeyboardView : UIView @property (nonatomic, weak) id delegate;
@end
上の二つの代理方法について、文章の幅の問題のため、実現の過程はデモを参考にして、中に詳しい注釈があります。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; //
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の中でtable Viewcellの高度適応をしていません。
2、入力ボックスの文案が多い場合、テーブルビューセルが乱れている可能性があります。ここでは処理していません。
デモの中に何か問題があったら、皆さんのメッセージを歓迎します。弟はきっと訂正して、一緒に勉強します。
GitHubアドレス
締め括りをつける
以上は小编でご绍介したiOSでチャット入力ボックスの机能を実现しています。皆さんに何かお聞きしたいことがあれば、メッセージをください。小编はすぐにお返事します。ここでも私たちのサイトを応援してくれてありがとうございます。