0822-QQ聊天界面自动回复FFMessageFrameModel (tableView控件)(通知中心)(window背景色)(tableView颜色设置)(单例对象的获取)

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.h

 

//  Person.m

#import "Person.h"

@implementation Person

- (void)personXq:(NSString *)noti
{
    
    NSLog(@"----------%@",noti.class);
    
//    NSLog(@"%@ %@:%@",self.name,noti.name,noti.userInfo[@"title"]);
    
}

@end
Person.m

 

//  XQCompany.h

#import <Foundation/Foundation.h>

@interface XQCompany : NSObject

//公司名称
@property (nonatomic, copy) NSString *name;

- (void)xxxx;

@end
XQCompany.h

 

//  XQCompany.m

#import "XQCompany.h"

@implementation XQCompany

- (void)xxxx
{
    NSLog(@"--099999");
}

@end
XQCompany.m

 

 

 

-------------------

QQ聊天界面补充知识

-------------------

系统默认通知

你可能感兴趣的:(0822-QQ聊天界面自动回复FFMessageFrameModel (tableView控件)(通知中心)(window背景色)(tableView颜色设置)(单例对象的获取))