文本段的整体复制

在做项目的时候经常遇到一些地方需要复制文本框的内容,虽然简单但还是稍做总结。

对复制的操作一般是在标签栏上(Label),响应一般是长按手势(LongPressGesture),其他情况不做赘述。

首先声明一个方法:

- (void)copyActionWithView:(UIView *)view WithString:(NSString *)text WithSuperView:(UIView *)superView;

在标签栏上添加手势,设置可触摸属性:

_contentLabel.userInteractionEnabled = YES;
UILongPressGestureRecognizer * longPressGR = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[_contentLabel addGestureRecognizer:longPressGR];
- (void)longPress:(UILongPressGestureRecognizer *)sender{
    if (sender.state == UIGestureRecognizerStateBegan) {
        [self copyActionWithView:sender.view WithString:self.contentLabel.text WithSuperView:nil];
    }
}

实现:(一般在控制器上)

- (void)copyActionWithView:(UIView *)view WithString:(NSString *)text WithSuperView:(UIView *)superView{
    [self becomeFirstResponder];
    self.ownCopyString = text;
    UIMenuController *menu = [UIMenuController sharedMenuController];
    UIMenuItem * copy = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(copyAction:)];
    menu.menuItems = [NSArray arrayWithObjects: copy, nil];
    CGRect targetRect;
    if (superView) {
        CGRect beginRcet = [view convertRect:view.frame toView:superView];
        CGRect minRect = [superView convertRect:superView.frame toView:superView.superview];
        CGRect endRect = [superView.superview convertRect:superView.superview.frame toView:self.view];
        targetRect.origin.y = endRect.origin.y + minRect.origin.y / 2.0 + beginRcet.origin.y / 2.0 + 8;
    }else{
        targetRect = [view convertRect:view.frame toView:self.view];
        targetRect.origin.y -= 20;
    }
    targetRect.origin.x = 110;
    targetRect.size.width = 100;
    targetRect.size.height = 17.1;
    [menu setTargetRect:targetRect inView:self.view];
    [menu setMenuVisible:YES animated:YES];
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(copyAction:)) {
        return YES;//显示
    }
    return NO;//不显示
}

- (BOOL)canBecomeFirstResponder{
    return YES;
}

- (void)copyAction:(id)sender{
    UIPasteboard * pasteboard = [UIPasteboard generalPasteboard];
    [pasteboard setString:self.ownCopyString];
}

在通常情况下,需要复制的文本都是在较深层次的视图,一般要通过协议实现具体的方法,这里只是简要说明。另外还可以自定义弹出点(复制小窗口)的位置。

上传一个示例,展示一下效果:

文本段的整体复制,布布扣,bubuko.com

时间: 2024-08-24 21:04:56

文本段的整体复制的相关文章

文本段的总体复制

在做项目的时候常常遇到一些地方须要复制文本框的内容,尽管简单但还是稍做总结. 对复制的操作通常是在标签栏上(Label).响应通常是长按手势(LongPressGesture),其它情况不做赘述. 首先声明一个方法: - (void)copyActionWithView:(UIView *)view WithString:(NSString *)text WithSuperView:(UIView *)superView; 在标签栏上加入手势,设置可触摸属性: _contentLabel.use

使用JavaScript读取所选文本并将其复制到剪贴板

询问大多数开发人员如何将用户选择的内容复制到剪贴板,他们会提到Flash的需求(因此Zeroclipboard等脚本的流行 ).然而,这种想法的调整现在归功于最近浏览器对JavaScript中关键技术的支持的改进,这使得复制到剪贴板本身成为可能.这种JavaScript方法在IE9 +,Firefox 41+和Chrome 42+中得到支持,最终为浏览器本身带来了原生剪切/复制支持.在本教程中,我们将看到如何阅读用户选择的文本内容,动态选择页面上的一些文本,最后但并非最不重要的是,将所选内容复制

JS实现文本全选并复制

项目需要,自己用execCommand()方法写了一个,目前在IE,chrome,fireFox 都正常运行: 话不多说,直接代码: HTML部分 <input class="addresNm" type="text" value="这里是等待被复制的东东" /> <input class="copyBtn" type="button" value="点击复制"/>

JavaFX2 - 文本可复制的Label

背景介绍 我的公司和我个人一直都使用JavaFX2来编写客户端应用程序,同时也作为Applet在浏览器中运行. 我们的客户曾经拿我们的产品和网页对比,然后向我们提过两个需求: (1) 希望界面上所有的文字都可以被复制,尤其是界面中的一些有参考意义的文字(而这些文字不可被编辑也不需要被编辑) (2) 希望可以打印界面的内容,乃至滚动条中没有显示出来的内容 遗憾的是,以上两点我都没能很好的解决.以后在这两方面我还会继续学习和研究. 文本可复制的Label方案 今天这篇文章主要说的是如何让Label中

复制 动态文本按钮

javascript: 1 function fzan(btn,texts) { 2 $(btn).zclip({ 3 path: "js/ZeroClipboard.swf", 4 copy: $(texts).text(), 5 afterCopy:function(){/* 复制成功后的操作 */ 6 var $copysuc = $("<div class='copy-tips'><div class='copy-tips-wrap'>? 复制

JS 复制文本兼容移动端 iOS &amp; android

有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设置为 `type="hidden" 或者 display:none 则无法选中文本,也就无法复制,可以设置 position:absolute;left:-999px; 来隐藏文本域. 静态复制 const copyInput = document.querySelector('#copyInput'); copyInput.value

Vector::构造,复制构造,析构

构造函数: // 构造函数 Vector(int c = DEFAULT_CAPACITY, int s = 0, T v = 0) //容量为c.规模为s.所有元素初始为v { _elem = new T[_capacity = c]; for (_size = 0; _size < s; _elem[_size++] = v); } //s <= c 复制构造函数: 从A数组中为[lo,hi)的左闭右开区间复制数据到vector对象: template <typename T>

【UI-基础】富文本

与NSString类似,在iOS中AttributedString也分为NSAttributedString和NSMutableAttributedString,不同的是,AttributedString对象多了一个Attribute的概念,一个AttributedString的对象包含很多的属性,每一个属性都有其对应的字符区域,在这里是使用NSRange来进行描述的. 使用AttributedString的方式通常有两种: 方式一: 首先初始化一个NSMutableAttributedStri

js限制textarea文本框的文字个数

现在发微博,那个文本框一般只能输入200字好像,再多就会自动删除,要么是提示字数受限,用Js就可实现本功能.今天带来的这个Js限制表单文本 框文字数量的例子,相信有此方面需要的是个不错的参考.为了便于使用,这里把代码拆分为HTML表单部分和JavaScript代码部分: HTML表单部分,代码如下: <form name=myform action=""> <textarea name="message" wrap="physical&q