我看JSQMessageViewController的笔记

一,配置cocoa pods

1、升级Ruby环境

终端输入:$gem update --system若有报错(没有权限去更新ruby),$sudo gem update —system来进行升级,出行RubyGems system software updated 表示升级完成

2、安装CocoaPods

  2.1使用淘宝镜像:

  1. $ gem sources --remove https://rubygems.org/  
  2. //等有反应之后再敲入以下命令  
  3. $ gem sources -a https://ruby.taobao.org/  

查看是否验证成功:$ gem sources -l 

正确的输出:

  1. *** CURRENT SOURCES ***  
  2.   
  3. http://ruby.taobao.org/  

安装:

  1. $ sudo gem install cocoapods  

安装结束后:

$ pod setup

问题:路径问题:

 
$ rvm use ruby- 1 .9 .3 -p 4 4 8  

3、配置Podfile文件

3.1 cd 文件夹

3.2 touch Podfile 或vim Podfile

3.3 编辑好后 如:

platform:ios, ‘7.0‘

$ pod ‘AFNetworking‘, ‘~> 2.3.1‘

按esc键和:wq完成保存并退出

3.4 pod install

4、更新CocoaPods

  1. $ sudo gem install cocoapods  
5、使用search命令
e.g.: pod search AFNetworking
6、编译从github上checkout下来已包含cocopods类库的项目?
$ pod update
7、
删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹
删除xcworkspace文件
使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及libPods.a引用
在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources
二、在storyboard中
配置好如图二-1所示:



图二-1

包含storyboard和代码编写的push,模态跳转至聊天界面,在模态跳转中,DemoMessagesViewController制定了协议一 JSQDemoViewControllerDelegate ,TableViewController 遵守协议一

三、主体理解

独立的协议有:

1.@protocol SYHMessageData <NSObject>

2.@protocol SYHMessagesCollectionViewDataSource <UICollectionViewDataSource>

3.@protocol SYHMessagesCollectionViewDelegateFlowLayout <UICollectionViewDelegateFlowLayout>

4.@protocol JSQMessageMediaData <NSObject>

5.@protocol JSQMessagesBubbleSizeCalculating <NSObject>


包含协议的:

@interface SYHMessagesCollectionView : UICollectionView 中,包含这些协议,(相当于制订了这些协议),即

@property (nonatomic,weak)id<SYHMessagesCollectionViewDataSource> dataSource;


@property (nonatomic,weak)id<SYHMessagesCollectionViewDelegateFlowLayout> delegate;

注意点一:为了避免重命名,需

@dynamic dataSource;

@dynamic delegate;


以下这些类中自定义了协议:

1.@class JSQMessagesCollectionViewCell;

@protocol JSQMessagesCollectionViewCellDelegate <NSObject>

@end

@interface JSQMessagesCollectionViewCell :UICollectionViewCell

@property (weak,nonatomic)id<JSQMessagesCollectionViewCellDelegate> delegate;


2.@class SYHMessagesInputToolbar;

@protocol SYHMessagesInputToolbarDelegate <UIToolbarDelegate>

@end

@interface SYHMessagesInputToolbar :UIToolbar

@property (nonatomic,weak)id<SYHMessagesInputToolbarDelegate> delegate;

@property (nonatomic,weak,readonly)SYHMessagesToolbarContentView *contentView;

结构层次inputToolbar:

@interface SYHMessagesToolbarContentView :UIView

@property (nonatomic,weak,readonly)SYHMessagesComposerTextView *textView;

即: SYHMessagesInputToolbar --->SYHMessagesToolbarContentView --->SYHMessagesComposerTextView

3.@class JSQMessagesComposerTextView;

@protocol JSQMessagesComposerTextViewPasteDelegate <NSObject>

@end

@interface JSQMessagesComposerTextView :UITextView

@property (weak,nonatomic)id<JSQMessagesComposerTextViewPasteDelegate> pasteDelegate;

4.@class JSQMessagesKeyboardController;

@protocol JSQMessagesKeyboardControllerDelegate <NSObject>

@end

@property (weak,nonatomic)id<JSQMessagesKeyboardControllerDelegate> delegate;


5.@class JSQMessagesLoadEarlierHeaderView;

@protocol JSQMessagesLoadEarlierHeaderViewDelegate <NSObject>

@end

@property (weak,nonatomic)id<JSQMessagesLoadEarlierHeaderViewDelegate> delegate;


遵守协议的:

在.h中

@interface SYHMessagesVC :UIViewController <SYHMessagesCollectionViewDataSource,SYHMessagesCollectionViewDelegateFlowLayout>

在.m中

@interface SYHMessagesVC ()<SYHMessagesInputToolbarDelegate>

- (void)viewDidLoad中,

1初始化xib

2配置viewController的内容,设置collectionView的datasource,delegate和inputToolbar的代理方法,配置键盘的位置,键盘的代理,更新collectionView的大小。用到分类;#import"NSBundle+SYHMessages.h"用在了textview的placeHolder中;

3.注册键盘和uimenu的通知;


- (void)viewWillAppear:(BOOL)animated中,实现以下:

1.断言senderId和senderDisplayName不为空;
2自定义的collectionViewLayout开始布局
3如果允许一开始显示的时候就显示最新的信息,就开启一个线程滚动:注意有3种情况,需要比较新消息和显示消息的。。。。。。。。。。。。。。
4.更新键盘上的点击点

- (void)viewDidAppear:(BOOL)animated中实现

1,增加观察者,kvo监听textView

2.增加手势;并相应手势的点击事件;

3.keyboard成为第一响应者;

4,如果ios8.0之前的话,把截屏移除;

- (void)viewDidDisappear:(BOOL)animated中实现

1.取消手势

2,移除观察着

3,keyboard失去第一响应



完成协议的代理方法
在SYHMessagesCollectionViewDataSource中,
































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值