热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UIMenuController/UIPasteboard(1)制作一个可以粘贴复制的Label

效果如下:苹果只放出来了UITextView,UITextField,webView三个控件的剪贴板,所以我们要自定义可以复制粘贴的控件,首先需要打开U

效果如下:

 

    苹果只放出来了 UITextView,UITextField,webView三个控件的剪贴板,所以我们要自定义可以复制粘贴的控件,首先需要打开UIResponder的两个方法:

- (BOOL)canBecomeFirstResponder{

    return YES;

}

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

{

    if (action == @selector(copy:)) {

        return  YES;

    }

    else if (action == @selector(paste:)) {

        return YES;

    } else if (action == @selector(cut:)) {

        return YES;

    } else if (action == @selector(select:)) {

        return YES;

    } else if (action == @selector(delete:)) {

        return NO;

    }

    return NO;

}

 OK,开放控件的剪贴板功能已经放出,剩下的就是实现了,话不多说,直接上代码:

 

//
// CanCopyLabel.m
// FeixunUniversal
//
// Created by zpz on 15/10/10.
// Copyright (c) 2015年 zpz. All rights reserved.
//

#import "CanCopyLabel.h"@implementation CanCopyLabel
- (instancetype)initWithFrame:(CGRect)frame
{self
= [super initWithFrame:frame];if (self) {self.userInteractionEnabled = YES;UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];[self addGestureRecognizer:touch];}return self;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:)) {return YES;}else if (action == @selector(paste:)) {return YES;} else if (action == @selector(cut:)) {return YES;} else if (action == @selector(select:)) {return YES;} else if (action == @selector(delete:)) {return NO;}return NO;
}
- (void)handleTap:(UIGestureRecognizer *)recognizer
{[self becomeFirstResponder];UIMenuController
*menu = [UIMenuController sharedMenuController];[menu setTargetRect:self.frame inView:self.superview];[menu setMenuVisible:YES animated:YES];
}
- (BOOL)canBecomeFirstResponder{return YES;
}
- (void)copy:(id)sender
{UIPasteboard
*pboard = [UIPasteboard generalPasteboard];pboard.string = self.text;
}
- (void)paste:(id)sender
{self.textAlignment
= UITextAlignmentRight;UIPasteboard *pboard = [UIPasteboard generalPasteboard];self.text = [NSString stringWithFormat:@"粘贴内容:%@",pboard.string];NSLog(@"pboard.string : %@",pboard.string);
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {// Drawing code
}
*/@end

在VC中初始化:

CanCopyLabel *canLabel = [[CanCopyLabel alloc] initWithFrame:CGRectMake(0, 64, kScreenW, 100)];canLabel.backgroundColor = [UIColor yellowColor];canLabel.text = @"我是谁";canLabel.textColor = [UIColor blueColor];[self.view addSubview:canLabel];

OK,运行就可以得到结果了。

 

转:https://www.cnblogs.com/zpz5789/p/4867705.html



推荐阅读
author-avatar
樱花漫天飞舞-卿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有