UIMenuController 在UIView 上的 显示

本文介绍了一种在iOS应用中实现长按时显示上下文菜单的方法。通过为UIView添加canBecomeFirstResponder方法并实现长按代理,文章展示了如何创建并展示包含拷贝与收藏选项的上下文菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在某个view 的.m文件中加上

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

2.例如写个长按的方法 的代理出来

// 长按钮
- (void)m80AttributedLabel:(M80AttributedLabel *)label longPressWtihText:(NSString *)text longPressPoint:(CGPoint)point{

    [label becomeFirstResponder];
    UIMenuItem *myCopyItem = [[UIMenuItem alloc] initWithTitle:@"拷贝" action:@selector(myCopyItemClick:)];

    UIMenuItem *myCollectionItem = [[UIMenuItem alloc] initWithTitle:@"收藏" action:@selector(myCollectionItemClick:)];

    UIMenuController *menuController = [UIMenuController sharedMenuController];

    [menuController setMenuItems:@[myCopyItem,myCollectionItem]];
    [menuController setTargetRect:label.frame inView:label.superview];
    [menuController setMenuVisible:YES animated:YES];
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {

    if (action == @selector(myCopyItemClick:)) { // copy
        return YES;
    }else if(action == @selector(myCollectionItemClick:)){ // 收藏
        return YES;
    }

    return NO;
}

// 拷贝
- (void)myCopyItemClick:(UIMenuController *)menu {

    // 将当前label的文字设置到粘贴板
    //[UIPasteboard generalPasteboard].string = self.text;
}
// 收藏
- (void)myCollectionItemClick:(UIMenuController *)menu {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值