文本段的总体复制

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

对复制的操作通常是在标签栏上(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];
}

在通常情况下,须要复制的文本都是在较深层次的视图,一般要通过协议实现详细的方法。这里仅仅是简要说明。

另外还能够自己定义弹出点(复制小窗体)的位置。

上传一个演示样例。展示一下效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg4OTQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

时间: 2024-10-28 14:37:55

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

文本段的整体复制

在做项目的时候经常遇到一些地方需要复制文本框的内容,虽然简单但还是稍做总结. 对复制的操作一般是在标签栏上(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

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

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

vim 粘贴复制操作

原文链接:http://www.cnblogs.com/lansh/archive/2010/08/19/1803378.html vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分重要: 命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式.在命令模式中输入字幕"i"就可以进入vi的输入模式编辑文件. 输入模式:在这个模式中我们可以编辑.修改.输入等编辑工作,在编辑器最后一

qt_文本编辑器实现_附带详细注释和源码下载

源码下载:http://pan.baidu.com/s/1hs2lx68 程序效果截图如下: 代码如下: 1 //imgprocessor.h 2 #ifndef IMGPROCESSOR_H 3 #define IMGPROCESSOR_H 4 5 #include <QMainWindow> 6 #include <QApplication> 7 #include <QImage> 8 #include <QLabel> 9 #include <Q