100 lines
2.7 KiB
Objective-C
100 lines
2.7 KiB
Objective-C
//
|
|
// 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
|