chore: import upstream snapshot with attribution
This commit is contained in:
+99
@@ -0,0 +1,99 @@
|
||||
//
|
||||
// TLChatCellMenuView.m
|
||||
// TLChat
|
||||
//
|
||||
// Created by 李伯坤 on 16/3/16.
|
||||
// Copyright © 2016年 李伯坤. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TLChatCellMenuView.h"
|
||||
|
||||
@interface TLChatCellMenuView ()
|
||||
|
||||
@property (nonatomic, strong) UIMenuController *menuController;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TLChatCellMenuView
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self setBackgroundColor:[UIColor clearColor]];
|
||||
self.menuController = [UIMenuController sharedMenuController];
|
||||
|
||||
UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss)];
|
||||
[self addGestureRecognizer:tapGR];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)showInView:(UIView *)view withMessageType:(TLMessageType)messageType rect:(CGRect)rect actionBlock:(void (^)(TLChatMenuItemType))actionBlock
|
||||
{
|
||||
_isShow = YES;
|
||||
[self setFrame:view.bounds];
|
||||
[view addSubview:self];
|
||||
[self setActionBlcok:actionBlock];
|
||||
[self setMessageType:messageType];
|
||||
|
||||
[self.menuController setTargetRect:rect inView:self];
|
||||
[self becomeFirstResponder];
|
||||
[self.menuController setMenuVisible:YES animated:YES];
|
||||
}
|
||||
|
||||
- (void)setMessageType:(TLMessageType)messageType
|
||||
{
|
||||
UIMenuItem *copy = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(copyButtonDown:)];
|
||||
UIMenuItem *transmit = [[UIMenuItem alloc] initWithTitle:@"转发" action:@selector(transmitButtonDown:)];
|
||||
UIMenuItem *collect = [[UIMenuItem alloc] initWithTitle:@"收藏" action:@selector(collectButtonDown:)];
|
||||
UIMenuItem *del = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(deleteButtonDown:)];
|
||||
[self.menuController setMenuItems:@[copy, transmit, collect, del]];
|
||||
}
|
||||
|
||||
- (void)dismiss
|
||||
{
|
||||
_isShow = NO;
|
||||
if (self.actionBlcok) {
|
||||
self.actionBlcok(TLChatMenuItemTypeCancel);
|
||||
}
|
||||
[self.menuController setMenuVisible:NO animated:YES];
|
||||
[self removeFromSuperview];
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeFirstResponder
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - Event Response -
|
||||
- (void)copyButtonDown:(UIMenuController *)sender
|
||||
{
|
||||
[self p_clickedMenuItemType:TLChatMenuItemTypeCopy];
|
||||
}
|
||||
|
||||
- (void)transmitButtonDown:(UIMenuController *)sender
|
||||
{
|
||||
[self p_clickedMenuItemType:TLChatMenuItemTypeCopy];
|
||||
}
|
||||
|
||||
- (void)collectButtonDown:(UIMenuController *)sender
|
||||
{
|
||||
[self p_clickedMenuItemType:TLChatMenuItemTypeCopy];
|
||||
}
|
||||
|
||||
- (void)deleteButtonDown:(UIMenuController *)sender
|
||||
{
|
||||
[self p_clickedMenuItemType:TLChatMenuItemTypeDelete];
|
||||
}
|
||||
|
||||
#pragma mark - Private Methods -
|
||||
- (void)p_clickedMenuItemType:(TLChatMenuItemType)type
|
||||
{
|
||||
_isShow = NO;
|
||||
[self removeFromSuperview];
|
||||
if (self.actionBlcok) {
|
||||
self.actionBlcok(type);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user