// // XHMessageInputView.h // MessageDisplayExample // // Created by HUAJIE-1 on 14-4-24. // Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. // #import #import "XHMessageTextView.h" typedef NS_ENUM(NSInteger, XHMessageInputViewStyle) { // iOS7样式的 XHMessageInputViewStyleFlat }; @protocol XHMessageInputViewDelegate @required /** * 输入框刚好开始编辑 * * @param messageInputTextView 输入框对象 */ - (void)inputTextViewDidBeginEditing:(XHMessageTextView *)messageInputTextView; /** * 输入框将要开始编辑 * * @param messageInputTextView 输入框对象 */ - (void)inputTextViewWillBeginEditing:(XHMessageTextView *)messageInputTextView; @optional /** * 在发送文本和语音之间发送改变时,会触发这个回调函数 * * @param changed 是否改为发送语音状态 */ - (void)didChangeSendVoiceAction:(BOOL)changed; /** * 发送文本消息,包括系统的表情 * * @param text 目标文本消息 */ - (void)didSendTextAction:(NSString *)text; /** * 点击+号按钮Action */ - (void)didSelectedMultipleMediaAction; /** * 按下錄音按鈕 "準備" 錄音 */ - (void)prepareRecordingVoiceActionWithCompletion:(BOOL (^)(void))completion; /** * 开始录音 */ - (void)didStartRecordingVoiceAction; /** * 手指向上滑动取消录音 */ - (void)didCancelRecordingVoiceAction; /** * 松开手指完成录音 */ - (void)didFinishRecoingVoiceAction; /** * 当手指离开按钮的范围内时,主要为了通知外部的HUD */ - (void)didDragOutsideAction; /** * 当手指再次进入按钮的范围内时,主要也是为了通知外部的HUD */ - (void)didDragInsideAction; /** * 发送第三方表情 * * @param facePath 目标表情的本地路径 */ - (void)didSendFaceAction:(BOOL)sendFace; @end @interface XHMessageInputView : UIImageView @property (nonatomic, weak) id delegate; /** * 用于输入文本消息的输入框 */ @property (nonatomic, weak, readonly) XHMessageTextView *inputTextView; /** * 当前输入工具条的样式 */ @property (nonatomic, assign) XHMessageInputViewStyle messageInputViewStyle; // default is XHMessageInputViewStyleFlat /** * 是否允许发送语音 */ @property (nonatomic, assign) BOOL allowsSendVoice; // default is YES /** * 是否允许发送多媒体 */ @property (nonatomic, assign) BOOL allowsSendMultiMedia; // default is YES /** * 是否支持发送表情 */ @property (nonatomic, assign) BOOL allowsSendFace; // default is YES /** * 切换文本和语音的按钮 */ @property (nonatomic, weak, readonly) UIButton *voiceChangeButton; /** * +号按钮 */ @property (nonatomic, weak, readonly) UIButton *multiMediaSendButton; /** * 第三方表情按钮 */ @property (nonatomic, weak, readonly) UIButton *faceSendButton; /** * 语音录制按钮 */ @property (nonatomic, weak, readonly) UIButton *holdDownButton; #pragma mark - Message input view /** * 动态改变高度 * * @param changeInHeight 目标变化的高度 */ - (void)adjustTextViewHeightBy:(CGFloat)changeInHeight; /** * 获取输入框内容字体行高 * * @return 返回行高 */ + (CGFloat)textViewLineHeight; /** * 获取最大行数 * * @return 返回最大行数 */ + (CGFloat)maxLines; /** * 获取根据最大行数和每行高度计算出来的最大显示高度 * * @return 返回最大显示高度 */ + (CGFloat)maxHeight; @end