-
Notifications
You must be signed in to change notification settings - Fork 524
/
ATLMessageInputToolbar.h
127 lines (105 loc) · 4.25 KB
/
ATLMessageInputToolbar.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//
// ATLUIMessageInputToolbar.h
// Atlas
//
// Created by Kevin Coleman on 9/18/14.
// Copyright (c) 2015 Layer. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import <UIKit/UIKit.h>
#import "ATLMessageComposeTextView.h"
#import "ATLMediaAttachment.h"
@class ATLMessageInputToolbar;
extern NSString *const ATLMessageInputToolbarDidChangeHeightNotification;
extern NSString *const ATLMessageInputToolbarAccessibilityLabel;
//---------------------------------
// Message Input Toolbar Delegate
//---------------------------------
/**
@abstract The `ATLMessageInputToolbarDelegate` notifies its receiver when buttons have been
tapped.
*/
@protocol ATLMessageInputToolbarDelegate <NSObject>
/**
@abstract Notifies the receiver that the right accessory button was tapped.
*/
- (void)messageInputToolbar:(ATLMessageInputToolbar *)messageInputToolbar didTapRightAccessoryButton:(UIButton *)rightAccessoryButton;
/**
@abstract Notifies the receiver that the left accessory button was tapped.
*/
- (void)messageInputToolbar:(ATLMessageInputToolbar *)messageInputToolbar didTapLeftAccessoryButton:(UIButton *)leftAccessoryButton;
@optional
/**
@abstract Notifies the receiver that typing has occurred.
*/
- (void)messageInputToolbarDidType:(ATLMessageInputToolbar *)messageInputToolbar;
/**
@abstract Notifies the receiver that typing has ended.
*/
- (void)messageInputToolbarDidEndTyping:(ATLMessageInputToolbar *)messageInputToolbar;
@end
/**
@abstract The `ATLMessageInputToolbar` provides a lightweight and customizable class
that is similar to the message input toolbar in Messages.
@discussion The class displays two customizable `UIButton` objects separated by a message input text view.
Instances are automatically resized in response to user or system input. The view also
caches any content provided and exposes that content back to a consuming object via the
mediaAttachments property.
*/
@interface ATLMessageInputToolbar : UIToolbar
//------------------------------
// Content Display Methods
//------------------------------
/**
@abstract Inserts the mediaAttachment as an attributed text attachment which is inlined with text.
@param mediaAttachment The `ATLMediaAttachment` instance containing information about the media.
@discussion The view will automatically resize the attachment's thumbnail and itself to comfortably
fit the thumbnail content. The image will also be cached and is accessible via the mediaAttachments
property.
*/
- (void)insertMediaAttachment:(ATLMediaAttachment *)mediaAttachment;
//-----------------------------
// UI Customization
//-----------------------------
/**
@abstract The left accessory button for the view.
@discussion By default, the button displays a camera icon.
*/
@property (nonatomic) UIButton *leftAccessoryButton;
/**
@abstract The right accessory button for the view.
@discussion By default, the button displays the text "SEND".
*/
@property (nonatomic) UIButton *rightAccessoryButton;
/**
@abstract An automatically resizing message composition field.
*/
@property (nonatomic) ATLMessageComposeTextView *textInputView;
/**
@abstract The delegate object for the view.
*/
@property (nonatomic, weak) id<ATLMessageInputToolbarDelegate> inputToolBarDelegate;
/**
@abstract The maximum number of lines of next to be displayed.
@default 8
@discussion The text view will stop growing once the maximum number of lines are displayed. It
will scroll its text view to keep the latest content visible.
*/
@property (nonatomic) NSUInteger maxNumberOfLines;
/**
@abstract An array of all media attachments displayed in the text view.
@discussion Any existing media attachments will be removed when the right accessory button is tapped.
*/
@property (nonatomic, readonly) NSArray *mediaAttachments;
@end