mirror of
https://github.com/zhigang1992/MessagesTableViewController.git
synced 2026-01-12 22:48:53 +08:00
100 lines
3.6 KiB
Objective-C
100 lines
3.6 KiB
Objective-C
//
|
|
// JSMessagesViewController.h
|
|
//
|
|
// Created by Jesse Squires on 2/12/13.
|
|
// Copyright (c) 2013 Hexed Bits. All rights reserved.
|
|
//
|
|
// http://www.hexedbits.com
|
|
//
|
|
//
|
|
// Largely based on work by Sam Soffes
|
|
// https://github.com/soffes
|
|
//
|
|
// SSMessagesViewController
|
|
// https://github.com/soffes/ssmessagesviewcontroller
|
|
//
|
|
//
|
|
// The MIT License
|
|
// Copyright (c) 2013 Jesse Squires
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
// associated documentation files (the "Software"), to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
|
// following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
|
|
#import <UIKit/UIKit.h>
|
|
#import "JSBubbleMessageCell.h"
|
|
#import "JSBubbleView.h"
|
|
#import "JSMessageInputView.h"
|
|
#import "JSMessageSoundEffect.h"
|
|
#import "UIButton+JSMessagesView.h"
|
|
|
|
typedef enum {
|
|
JSMessagesViewTimestampPolicyAll = 0,
|
|
JSMessagesViewTimestampPolicyAlternating,
|
|
JSMessagesViewTimestampPolicyEveryThree,
|
|
JSMessagesViewTimestampPolicyEveryFive,
|
|
JSMessagesViewTimestampPolicyCustom
|
|
} JSMessagesViewTimestampPolicy;
|
|
|
|
|
|
|
|
@protocol JSMessagesViewDelegate <NSObject>
|
|
@required
|
|
- (void)sendPressed:(UIButton *)sender withText:(NSString *)text;
|
|
- (JSBubbleMessageStyle)messageStyleForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
- (JSMessagesViewTimestampPolicy)timestampPolicyForMessagesView;
|
|
- (BOOL)hasTimestampForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
- (BOOL )hasPhotoForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
@end
|
|
|
|
|
|
|
|
@protocol JSMessagesViewDataSource <NSObject>
|
|
@optional
|
|
- (NSDate *)timestampForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
- (void)goCrazyWithYourAvatarImageView:(UIImageView *)avatarView forRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
@required
|
|
- (NSString *)textForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
@end
|
|
|
|
|
|
|
|
@interface JSMessagesViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, UITextViewDelegate>
|
|
|
|
@property (weak, nonatomic) id<JSMessagesViewDelegate> delegate;
|
|
@property (weak, nonatomic) id<JSMessagesViewDataSource> dataSource;
|
|
@property (strong, nonatomic) UITableView *tableView;
|
|
@property (strong, nonatomic) JSMessageInputView *inputToolBarView;
|
|
@property (assign, nonatomic) CGFloat previousTextViewContentHeight;
|
|
|
|
#pragma mark - Initialization
|
|
- (UIButton *)sendButton;
|
|
|
|
#pragma mark - Actions
|
|
- (void)sendPressed:(UIButton *)sender;
|
|
- (void)handleSwipe:(UIGestureRecognizer *)guestureRecognizer;
|
|
|
|
#pragma mark - Messages view controller
|
|
- (BOOL)shouldHaveTimestampForRowAtIndexPath:(NSIndexPath *)indexPath;
|
|
- (void)finishSend;
|
|
- (void)setBackgroundColor:(UIColor *)color;
|
|
- (void)scrollToBottomAnimated:(BOOL)animated;
|
|
|
|
#pragma mark - Keyboard notifications
|
|
- (void)handleWillShowKeyboard:(NSNotification *)notification;
|
|
- (void)handleWillHideKeyboard:(NSNotification *)notification;
|
|
- (void)keyboardWillShowHide:(NSNotification *)notification;
|
|
|
|
@end |