0822-QQ聊天界面自动回复FFMessageFrameModel
tableView控件
1、story board默认的view controller 拖table view 控件 底部一个灰色view控件
2、自定义FFMessageCell类继承UITableViewCell
3、创建Model模型 plist的number类型对应属性写 enum 推荐enum (或者 BOOL)
4、 采用 @property (nonatomic,strong) NSMutableArray *messageLists; //因为后续要往里面添加东西
5、写cell初始化方法里初始化子空间并添加到self.contentView里(自动已经有了方法名了) FFMessageCell.m写timeLabel属性用strong
(
如果用weak也可以 但是需要这样处理 来保证timeLabel不被销毁
)
6、实例化cell的类方法
7、FFMessageFrameModel 包含属性(MessageModel对象) 重写setMessage方法 里面设置 FFMessageFrameModel数据(CGRect 类型属性数据)
8、创建.h文件 包含各种常量 #define (使用的时候#import就可以了)
如:#define bScreenWidth [[UIScreen mainScreen]] bounds].size.width
#define bNormalH 44
9、//_textViewF = CGRectMake(textX,textY,width,height);
_textViewF = (CGRect){{textX,textY},textRealSize} //
CGSize textMaxSize = CGSizeMake(150, MAXFLOAT);
10、storyboard - tableView控件连线设置属性tableView
11、取消tableView-cell的选择点击选择
self.tableView.allowSelection
12.messageModel 增加一个hideTime属性 默认值是0
messageArray lastObject
str.isEqualToString:
13、拖一个button到底部 设置button的image属性 这样不变形 如果用background属性就会被平铺了
14、图片拉伸方法 resizableImageWithCapInsets:
15、取色器取色 设置r g b颜色
16、取消分割线 self.tableView.seperatorStyle = UITableViewCellStyleNone;
17、viewDidLoad 通知中心添加监听者(self控制器)监听通知为 UIKeyboardDidChangeFrameNotification(键盘frame改变的的通知)
这个UIKeyboardDidChangeFrameNotification是系统发出的 当键盘出现或者退出的时候回发出这这个 通知
18、控制器监听键盘的出现和退出 输出通知信息 noti.userInfo; 得到 通知给出的键盘位置等信息
[[NotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- (void)keyboardWillChangeFrame:(NSNotification *)noti
{
NSLog(@"%@",noti.userInfo);
}
19、让self.view往上移动
self.view.transform = [CGAffineTransformMakeTranslate:0,-216];
20、字典转CGRect
21、设置控制器背景色 防止弹出键盘和退出键盘时候 键盘与下面的输入框之间出现黑色空隙
- (void)keyboardWillChangeFrame:(NSNotification *)noti
{
NSLog(@"%@",noti.userInfo);
}
22、textField左边的view设置宽度 让textField光标初始显示位置向右一点
viewDidLoad
23、设置故事版中的textField 属性 Return key为send 勾选 auto-enable return key (点击send后 send变灰色)
24、textField连线delegate给控制器
控制器实现代理方法
textFieldShouldReturn {
方法里面将数据交给messageFrameModel的messages数组里
[self.tableView reloadData];
//tableView滚动到最后一行
self.scroView scrollToRowAtIndexPath
清空textField中的文字
retrun YES;
}
25、字典保存plist 单个字典数据 NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:@"xx.plist" ofType:nil];
26、textField中的字符 遍历每个字符 与字典中的值进行比较 如果相同则则添加一条数据到messageFrameModel中 并刷新表格
textField.text substring WithRange:NSMakeRange(0,1);//1是从第0个位置开始 截取1个字符
27、输入框左边的view设置一个宽度 让光标初始显示位置靠右一点
//设置做边距
self.inputView.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 8, 0)];
//一直显示
self.inputView.leftViewMode = UITextFieldViewModeAlways;
------------------
通知中心
创建一个通知者
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:zhangsan selector:@selector(receiveNoti:) name:@"A" object:sj]; //zhangsan 监听 通知名称为A并且 并且是sj发布的通知
NSNotification *noti = [NSNotification notificationWithName:@"A" object:sj userInfo:@{@"name":@"我公司招聘一些人"}];;
[center postNotification:noti];
zhangsan监听到了通知后的操作
- (void)personXq:(NSString *)noti
{
控制器里销毁通知
通知必须要在控制器消失的时候做销毁操作
这里还可以在willDisAppear里销毁通知
-
1、新建commandLine 选择fundation框架
2、新建通知中心
3、通知中心添加 张三来监听 通知名称为A 并且是sj 发布的信息
4、通知中心 发布sj发出的信息
5、zhangsan得到发布的信息在receiveNoti里
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
// 参数为nil就表示任意的意思
[center addObserver:zhangsan selector:@selector(receiveNoti:) name:@"A" object:sj]; //zhangsan 监听 通知名称为A并且 并且是sj发布的通知
//这里参数不能少了 少了就没意义了 [center postNotificationName:@"A" //通知名称A sj发布通知 object:sj userInfo:@{@"title":@"新上市一批帅哥", @"info":@"........."}];
//NSNotification *noti = [NSNotification notificationWithName:@"A" object:sj];
//[center postNotification:noti];
完整代码
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, copy) NSString *name; -(void) personXq:(NSString *)noti; @end
// Person.m #import "Person.h" @implementation Person - (void)personXq:(NSString *)noti { NSLog(@"----------%@",noti.class); // NSLog(@"%@ %@:%@",self.name,noti.name,noti.userInfo[@"title"]); } @end
// XQCompany.h #import <Foundation/Foundation.h> @interface XQCompany : NSObject //公司名称 @property (nonatomic, copy) NSString *name; - (void)xxxx; @end
// XQCompany.m #import "XQCompany.h" @implementation XQCompany - (void)xxxx { NSLog(@"--099999"); } @end
-------------------
QQ聊天界面补充知识
-------------------
系统默认通知