uimenucontroller

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
#pragma mark - UIMenuController的处理
- (void)didClickCell
{
UIMenuController *menu = [UIMenuController sharedMenuController];
if (menu.isMenuVisible) {
[menu setMenuVisible:NO animated:YES];
} else {
[self becomeFirstResponder];
UIMenuItem *dingItem = [[UIMenuItem alloc] initWithTitle:@"顶" action:@selector(ding:)];
UIMenuItem *replyItem = [[UIMenuItem alloc] initWithTitle:@"回复" action:@selector(reply:)];
UIMenuItem *reportItem = [[UIMenuItem alloc] initWithTitle:@"举报" action:@selector(report:)];
[menu setMenuItems:@[dingItem, replyItem, reportItem]];
CGRect rect = CGRectMake(0, self.height * 0.5, self.width, self.height * 0.5);
[menu setTargetRect:rect inView:self];
[menu setMenuVisible:YES animated:YES];
}
}
* 能能成为第一响应者
*/
- (BOOL)canBecomeFirstResponder
{
return YES;
}
* 能响应对应的事件
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(ding:) || action == @selector(reply:) || action == @selector(report:)) {
return YES;
}
return NO;
}
* 顶
*/
- (void)ding:(UIMenuController *)menu
{
ZXX_SHOW_METHOD_INFO
}
* 评论
*/
- (void)reply:(UIMenuController *)menu
{
ZXX_SHOW_METHOD_INFO
}
* 举报
*/
- (void)report:(UIMenuController *)menu
{
ZXX_SHOW_METHOD_INFO
}

block 调用时防错处理

1
2
3
4
5
6
7
- (void)clickButtonWithCompletionBlock:(void(^)())completionBlock
{
//...
//当外界调用该方法传block 为 nil 时, 直接调用会出错
//要判断
!completionBlock ? : completionBlock();
}