label长按复制

创建继承自UILabel的子类

-(void)awakeFromNib {

    [super awakeFromNib];

    [self longPressGestureHandler];

    [[NSNotificationCenter defaultCenter] addObserverForName:UIMenuControllerWillHideMenuNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {

        self.backgroundColor = [UIColor whiteColor];

    }];

}

-(BOOL)canBecomeFirstResponder {

    return YES;

}

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

    if (action == @selector(copyFunc)) {

        return YES;

    }

    return NO;

}

-(void)longPressGestureHandler {

    self.userInteractionEnabled = YES;

    UILongPressGestureRecognizer *touch = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleGestureTap:)];

    [self addGestureRecognizer:touch];

}

-(void)handleGestureTap:(UIGestureRecognizer*) recognizer {

    if (recognizer.state == UIGestureRecognizerStateEnded) {

        return;

    }else if (recognizer.state == UIGestureRecognizerStateBegan){

        [self becomeFirstResponder];

        self.backgroundColor = [UIColor colorWithRed:236/255.0 green:236/255.0 blue:236/255.0 alpha:1.0];

        UIMenuItem * item = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(copyFunc)];

        [[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview];

        [UIMenuController sharedMenuController].menuItems = @[item];

        [UIMenuController sharedMenuController].menuVisible = YES;

    }

}

-(void)copyFunc{

    UIPasteboard *pboard = [UIPasteboard generalPasteboard];

    pboard.string = self.text;

}

你可能感兴趣的:(label长按复制)