一,配置cocoa pods
1、升级Ruby环境
终端输入:$gem update --system若有报错(没有权限去更新ruby),$sudo gem update —system来进行升级,出行RubyGems system software updated 表示升级完成
2、安装CocoaPods
2.1使用淘宝镜像:
- $ gem sources --remove https://rubygems.org/
- //等有反应之后再敲入以下命令
- $ gem sources -a https://ruby.taobao.org/
查看是否验证成功:$ gem sources -l
正确的输出:
- *** CURRENT SOURCES ***
- http://ruby.taobao.org/
安装:
- $ sudo gem install cocoapods
安装结束后:
$ pod setup
问题:路径问题:
$ rvm use ruby- 1 .9 .3 -p 4 4 83、配置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
- $ sudo gem install cocoapods
$ pod update7、
删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹 删除xcworkspace文件 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及libPods.a引用 在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources
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;
@interface SYHMessagesToolbarContentView :UIView
@property (nonatomic,weak,readonly)SYHMessagesComposerTextView *textView;
即: SYHMessagesInputToolbar --->SYHMessagesToolbarContentView --->SYHMessagesComposerTextView3.@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中,实现以下:
在
- (void)viewDidAppear:(BOOL)animated中实现
1,增加观察者,kvo监听textView
2.增加手势;并相应手势的点击事件;
3.keyboard成为第一响应者;
4,如果ios8.0之前的话,把截屏移除;
在
- (void)viewDidDisappear:(BOOL)animated中实现
1.取消手势
2,移除观察着
3,keyboard失去第一响应