精华内容
下载资源
问答
  • IOS手机中图片复制粘贴,剪切

    千次阅读 2013-12-29 22:23:50
    触摸两次图片后的情况如下: 选择copy,进行操作 在空白处触摸两次,然后效果图如下: 鼠标放上去选择paste,后效果如图所示: 其实很简单,是不是呀,只要记下那几个函数,就可以...

    在应用程序中也可以使用剪切板时需要使用UIPasteboard类,使用的第一个步骤是取得UIPasteBoard的单一实例(single instance),可以通过generalPasteboard方法取得此种单一实例。

    编辑菜单可以通过UIMenuController类在应用程序中使用此编辑菜单。UIMenuController 通过sharedMenuController属性取得单一实例,例如需要两次触摸画面时显示copy等,

    首先,因为编辑菜单只能在第一响应者中显示,如果默认非第一响应者的情况下,需要重写UIResponder 的canBecomeFirstresponder方法并返回 YES.

    接着,需要重写UIResponder的canPerformAction:withSender:方法,让需要显示菜单返回YES。

    新建一个单视图控制器工程。

    下面我们就结合实际的代码来说明吧

    具体的代码如下:

    HHLAppDelegate.h

    #import <UIKit/UIKit.h>
    
    @class HHLViewController;
    
    @interface HHLAppDelegate : UIResponder <UIApplicationDelegate>
    
    @property (strong, nonatomic) UIWindow *window;
    
    @property (strong, nonatomic) HHLViewController *viewController;
    
    @end
    


    HHLAppDelegate.m

    #import "HHLAppDelegate.h"
    
    #import "HHLViewController.h"
    
    @implementation HHLAppDelegate
    
    - (void)dealloc
    {
        [_window release];
        [_viewController release];
        [super dealloc];
    }
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        // Override point for customization after application launch.
        self.viewController = [[[HHLViewController alloc] initWithNibName:@"HHLViewController" bundle:nil] autorelease];
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES;
    }
    
    - (void)applicationWillResignActive:(UIApplication *)application
    {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }
    
    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }
    
    - (void)applicationWillEnterForeground:(UIApplication *)application
    {
        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    }
    
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }
    
    - (void)applicationWillTerminate:(UIApplication *)application
    {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }
    
    @end
    


    HHLViewController.h

    #import <UIKit/UIKit.h>
    
    @interface HHLViewController : UIViewController
    {
    @private
        CGPoint touchPoint;
        
    }
    @end
    


     HHLViewController.m


    #import "HHLViewController.h"
    
    @interface HHLViewController ()
    
    - (UIImageView *)imageContainsPoint:(CGPoint)point;
    
    @end
    
    @implementation HHLViewController
    
    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        self.view.backgroundColor = [UIColor whiteColor];
        
        UIImage *image = [UIImage imageNamed:@"bug1.png"];
        UIImageView *bug1 = [[UIImageView alloc]initWithImage:image];
        bug1.center = self.view.center;
        [self.view addSubview:bug1];
        [bug1 release];
        
    //    image = [UIImage imageNamed:@"bug2.png"];
    //    UIImageView *bug2 = [[UIImageView alloc]initWithImage:image];
    //    
    //    bug2.center = self.view.center;
    //    [self.view addSubview:bug2];
    //    [bug2 release];
    //    
    //    
    //    image = [UIImage imageNamed:@"bug3.png"];
    //    
    //    UIImageView *bug3 = [[UIImageView alloc]initWithImage:image];
    //    bug3.center = self.view.center;
    //    [self.view addSubview:bug3];
    //    [bug3 release];
        
        
    }
    
    
    //不成为第一响应这无法显示编辑菜单
    -(BOOL)canBecomeFirstResponder
    {
        return YES;
    }
    
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch = [touches anyObject];
        if ([self becomeFirstResponder] && 1 < [touch tapCount]) {
            //连续两次碰触后显示编辑菜单
            UIMenuController *menu = [UIMenuController sharedMenuController];
            touchPoint = [touch locationInView:self.view];
            CGRect minRect;
            minRect.origin = touchPoint;
            [menu setTargetRect:minRect inView:self.view];
            [menu setMenuVisible:YES animated:YES];
        }
    }
    
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
    {
        if (@selector(copy:) == action) {
            if ([self imageContainsPoint:touchPoint]) {
                return YES;
            }
            
        }else if (@selector(cut:) == action){
            if ([self imageContainsPoint:touchPoint]) {
                return YES;
                
            }
            
        }else if (@selector(paste:) == action){
        
            return (nil != [UIPasteboard generalPasteboard].image);
            
        }
    return NO;
    
    }
    
    
    - (UIImageView *)imageContainsPoint:(CGPoint)point
    {
        for (UIView *view in self.view.subviews) {
            if (CGRectContainsPoint(view.frame, point)) {  //如果point 被包含在view.frame内则返回true,否则返回false
                if ([view isKindOfClass:[UIImageView class]]) {
                    return (UIImageView *)view;
                    
                }
            }
        }
        return nil;
        
    }
    
    - (void)copy:(id)sender
    {
        UIImageView *imageView = [self imageContainsPoint:touchPoint];
        if (imageView) {
            [UIPasteboard generalPasteboard].image = imageView.image;
            
        }
    }
    - (void)cut:(id)sender
    {
        UIImageView *imageView = [self imageContainsPoint:touchPoint];
        if (imageView) {
            [UIPasteboard generalPasteboard].image = imageView.image;
            [imageView removeFromSuperview];
        }
    }
    
    - (void)paste:(id)sender
    {
        UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
        if (pasteBoard) {
            UIImageView *bug = [[[UIImageView alloc]initWithImage:pasteBoard.image]autorelease];
            bug.center = touchPoint;
            [self.view addSubview:bug];
            pasteBoard.image = bug.image;
            
            
        }
    }
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    	// Do any additional setup after loading the view, typically from a nib.
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    运行程序后,效果如下:



    触摸两次图片后的情况如下:


    选择copy,进行操作 在空白处触摸两次,然后效果图如下:


    鼠标放上去选择paste,后效果如图所示:



    其实很简单,是不是呀,只要记下那几个函数,就可以了,以后用到的时候套用即可。

    展开全文
  • 使用touchesEnded:withEvent:自定义复制粘贴菜单,copy:复制屏幕中的图片,cut:剪切屏幕中的图片,paste:粘贴屏幕中的图片. 1 @implementation prjCopyAndPaste 2 3 -(void)viewDidLoad 4 { 5 [super ...

    使用touchesEnded:withEvent:自定义复制粘贴菜单,copy:复制屏幕中的图片,cut:剪切屏幕中的图片,paste:粘贴屏幕中的图片.

     1 @implementation prjCopyAndPaste
     2 
     3 -(void)viewDidLoad
     4 {
     5     [super viewDidLoad];
     6 }
     7 
     8 -(void)viewWillAppear:(BOOL)animated
     9 {
    10     [super viewWillAppear:animated];
    11     self.view.backgroundColor = [UIColor whiteColor];
    12     
    13     [self setupImageWithName:@"img_01" center:self.view.center];
    14     [self setupImageWithName:@"img_02" center:CGPointMake(200, 300)];
    15     [self setupImageWithName:@"img_03" center:CGPointMake(50, 80)];
    16 }
    17 
    18 -(void)setupImageWithName:(NSString *)imageNamed center:(CGPoint)point
    19 {
    20     UIImageView *bug = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imageNamed]];
    21     bug.center = point;
    22     [self.view addSubview:bug];
    23 }
    24 //成为第一响应者显示编辑菜单
    25 -(BOOL)canBecomeFirstResponder
    26 {
    27     return YES;
    28 }
    29 
    30 -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    31 {
    32     UITouch *touch = [touches anyObject];
    33     //连续两次触碰显示菜单
    34     if ([self becomeFirstResponder] && 1 < [touch tapCount]) {
    35         UIMenuController *menu = [UIMenuController sharedMenuController];
    36         self.touchPoint = [touch locationInView:self.view];
    37         CGRect minRect;
    38         minRect.origin = self.touchPoint;
    39         [menu setTargetRect:minRect inView:self.view];
    40         [menu setMenuVisible:YES animated:YES];
    41     }
    42 }
    43 
    44 -(BOOL)canPerformAction:(SEL)action withSender:(id)sender
    45 {
    46     if (@selector(copy:) == action) {
    47         if ([self imageContainsPoint:self.touchPoint]) {
    48             return YES;
    49         }
    50     }else if(@selector(cut:) == action){
    51         if ([self imageContainsPoint:self.touchPoint]) {
    52             return YES;
    53         }
    54     }else if(@selector(paste:) == action){
    55         return (nil != [UIPasteboard generalPasteboard].image);
    56     }
    57     return NO;
    58 }
    59 
    60 -(UIImageView *)imageContainsPoint:(CGPoint)point
    61 {
    62     for (UIView *view in self.view.subviews) {
    63         if (CGRectContainsPoint(view.frame, point)) {
    64             if ([view isKindOfClass:[UIImageView class]]) {
    65                 return (UIImageView *)view;
    66             }
    67         }
    68     }
    69     return nil;
    70 }
    71 -(void)copy:(id)sender
    72 {
    73     UIImageView *imageView = [self imageContainsPoint:self.touchPoint];
    74     if (imageView) {
    75         [UIPasteboard generalPasteboard].image = imageView.image;
    76     }
    77 }
    78 -(void)cut:(id)sender
    79 {
    80     UIImageView *imageView = [self imageContainsPoint:self.touchPoint];
    81     if (imageView) {
    82         [imageView removeFromSuperview];
    83     }
    84 }
    85 -(void)paste:(id)sender
    86 {
    87     UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    88     if (pasteboard.image) {
    89         UIImageView *bug = [[UIImageView alloc] initWithImage:pasteboard.image];
    90         bug.center = self.touchPoint;
    91         [self.view addSubview:bug];
    92         pasteboard.image = bug.image;
    93     }
    94 }
    95 
    96 
    97 @end
    View Code

    实现效果如图:

    转载于:https://www.cnblogs.com/runw/p/4687587.html

    展开全文
  • bash剪切复制粘贴Cutting, copying, and pasting are three of the most basic features available to a computer user, but as you might expect Microsoft Word gives you more options than just those....
    bash剪切复制粘贴

    bash剪切复制粘贴

    Cutting, copying, and pasting are three of the most basic features available to a computer user, but as you might expect Microsoft Word gives you more options than just those. There’s a built-in Office clipboard that’s pretty powerful, the ability to choose the format of content you paste, and more. Here’s how it all works.

    剪切,复制和粘贴是计算机用户可以使用的三个最基本的功能,但是您可能希望Microsoft Word提供的不仅仅是这些功能。 有一个内置的Office剪贴板,功能强大,可以选择粘贴内容的格式,还有更多功能。 这就是全部的运作方式。

    以您想要的方式粘贴文本 (Paste Text the Way You Want)

    When you paste text using Ctrl+V, Word defaults to pasting both the text and any formatting applied to that text. This means that the text will look like it did in the original location. Technically, Word copies the formatting marks in the text, which can be interpreted in different ways. This is why you might find that text copied from a website can appear much larger in Word; the formatting marks are interpreted differently by Word than they are by your web browser.

    当您使用Ctrl + V粘贴文本时,Word默认会同时粘贴文本和应用于该文本的所有格式。 这意味着文本看起来像在原始位置一样。 从技术上讲,Word复制文本中的格式标记,可以用不同的方式来解释它们。 这就是为什么您可能会发现从网站复制的文本在Word中会显得更大的原因。 Word对格式标记的解释与Web浏览器对格式标记的解释不同。

    Instead of hitting Ctrl+V, you can click Home > Paste to see some different options.

    您可以单击“主页”>“粘贴”来查看一些其他选项,而不是按Ctrl + V。

    The “Paste” drop-down menu shows a few options as icons across the top. From left to right these are:

    “粘贴”下拉菜单在顶部显示一些选项作为图标。 从左到右分别是:

    • Keep Source Formatting: This is the default option you get when pressing Ctrl+V, as described above.

      保持源格式:这是按Ctrl + V时获得的默认选项,如上所述。

    • Merge Formatting: This command pastes just the text you’ve copied but changes the formatting to match the surrounding text into which you’re pasting.

      合并格式:此命令仅粘贴您已复制的文本,但更改格式以匹配您要粘贴到的周围文本。

    • Picture: This command inserts the text as a picture.

      图片:此命令将文本插入为图片。

    • Keep Text Only: This command removes all formatting from the original text. The text will take on the default formatting of the paragraph into which you insert the text.

      保留文本此命令从原始文本中删除所有格式。 文本将采用插入文本的段落的默认格式。

    There are also a couple of other options on the “Paste” drop-down menu. The “Paste Special” command lets you paste whatever you’ve copied as a special document type. For example, you could paste as a Word document, picture, or even HTML. The options available in the Paste Special window change depending on what you’ve copied. If you copied text, for example, you could insert it as a separate Word document. If you copied an image, you can change the format of the image when you paste (which we’ll talk more about in the next section).

    “粘贴”下拉菜单上还有两个其他选项。 “粘贴特殊”命令使您可以粘贴复制为特殊文档类型的所有内容。 例如,您可以将其粘贴为Word文档,图片甚至HTML。 “选择性粘贴”窗口中可用的选项会根据您复制的内容而变化。 例如,如果复制了文本,则可以将其作为单独的Word文档插入。 如果您复制了图像,则可以在粘贴时更改图像的格式(我们将在下一节中详细讨论)。

    The “Set Default Paste” option lets you change the default paste action (when you press Ctrl+V) if you don’t want “Keep Source Formatting” to be the default.

    如果您不想将“保留源格式”设置为默认值,则可以使用“设置默认粘贴”选项更改默认的粘贴操作(按Ctrl + V时)。

    以您想要的方式粘贴图像 (Paste Images the Way You Want)

    When you paste an image into Word, it gives you some flexibility on the format. Click Home > Paste > Paste Special (after copying an image) to see the options.

    将图像粘贴到Word中时,它为格式提供了一定的灵活性。 单击主页>粘贴>选择性粘贴(复制图像后)以查看选项。

    In this case, we’re pasting from the clipboard, so we can choose if we want the pasted image to be in PNG or BitMap format. If we were pasting an image file, we’d get the choice to embed it as a file or link to it instead (which lowers the size of the document).

    在这种情况下,我们是从剪贴板粘贴的,因此我们可以选择是否要粘贴的图像为PNG或BitMap格式。 如果要粘贴图像文件,则可以选择将其嵌入为文件或链接至该文件(这会减小文档的大小)。

    You can also choose whether your pasted images default to “in line with text” or a different text wrapping by going to File > Options > Advanced > Insert/Paste Pictures As.

    您还可以通过转到文件>选项>高级>插入/粘贴图片为,选择粘贴的图像默认为“与文本一致”还是其他文本换行。

    If you’re not sure what text wrapping is, or why you might change it, we’ve got you covered.

    如果您不确定什么是自动换行,或者不确定为什么要更改它,我们已经为您服务

    复制格式并将其应用于其他文本 (Copy Formatting and Apply it to Other Text)

    You’ve got your formatting set just so, and now you want various other parts of your document to look the same. It would be a pain to have to change each block of text to match manually, so Word provides the Format Painter tool to help. Format Painter copies the formatting from selected text and then pastes it into other text. If you select an entire paragraph, it copies the paragraph formatting. If you select just a few words of text, it copies any character formatting applied to that text.

    格式设置如此,现在您希望文档的其他各个部分看起来相同。 必须手动更改每个文本块以使其匹配,这很痛苦,因此Word提供了Format Painter工具来提供帮助。 格式刷从选定的文本复制格式,然后将其粘贴到其他文本中。 如果选择整个段落,它将复制段落格式。 如果仅选择文本的几个单词,它将复制应用于该文本的所有字符格式。

    Select the text with the formatting you want to copy, hit Home > Format Painter and then select the text to which you want to paste the formatting. If you want to paste formatting to multiple locations, select the text and then double-click the “Format Painter” button. Anything you click or select after that gets pasted with the original formatting, and you can click the “Format Painter” button again to turn it off.

    选择要复制格式的文本,单击“主页”>“格式刷”,然后选择要将格式粘贴到的文本。 如果要将格式粘贴到多个位置,请选择文本,然后双击“格式刷”按钮。 之后单击或选择的任何内容都将粘贴原始格式,然后可以再次单击“格式刷”按钮将其关闭。

    For more tips on using Format Painter, check out our full guide to copying formatting in Word.

    有关使用Format Painter的更多提示,请查看我们有关在Word中复制格式的完整指南。

    将跟踪的更改从一个文档复制到另一个文档 (Copying Tracked Changes From One Document to Another)

    01_selecting_text_with_changes

    If you’re using Tracked Changes and you want to move part of a document to a new document, you might not want to lose those tracked changes. Thankfully you don’t have to, but it’s not always obvious how to do it. This is primarily because you have to turn the Track Changes feature off before you copy the text.

    如果您使用的是“跟踪的更改”,并且想要将文档的一部分移至新文档,则可能不想丢失那些跟踪的更改。 值得庆幸的是,您不必这样做,但如何做到这一点并不总是显而易见的。 这主要是因为在复制文本之前必须关闭“跟踪更改”功能。

    This initially seems counter-intuitive, but there is some logic behind it. If you copy text with tracked changes and don’t turn the feature off first, Word assumes that you want to copy that text as if all the changes had been accepted. Want to know more? Check out our guide to copying, and pasting text with tracked changes.

    最初,这似乎违反直觉,但是背后有一些逻辑。 如果您复制具有跟踪更改的文本并且不先关闭功能,Word就会假定您要复制该文本,就好像所有更改都已被接受一样。 想知道更多? 查看我们的指南,以复制和粘贴带有跟踪更改的文本

    使用钉剪切或复制很多东西,然后一次粘贴所有东西 (Using the Spike to Cut or Copy Lots of Things and Then Paste Them All at Once)

    09_selecting_autotext

    You’ve written a great document and all is well, except that you now want to move various bits of it around to create a new paragraph. Or maybe you want to go through your document and copy all the names of people into a list in another document. Either way, this means you’ll have to cut individual bits of text from the document, go to the site of your new paragraph, paste the text in, then rinse and repeat until you’re done—right? Wrong.

    您已经编写了一个不错的文档,一切都很好,只不过您现在想要移动文档的各个部分以创建新段落。 或者,也许您想浏览文档并将所有人员的姓名复制到另一个文档的列表中。 无论哪种方式,这都意味着您必须从文档中剪切出个别文本,转到新段落的位置,粘贴文本,然后冲洗并重复直到完成为止,对吗? 错误。

    The spike is one of Word’s best-kept secrets. It’s named after those literal spikes you used to see get in paper-based offices and sometimes still see in restaurants—you know, the sharp metal thing they stab receipts onto?

    峰值是Word保留得最好的秘密之一。 它以您曾经在纸质办公室看到的尖峰尖刺而得名,有时在餐馆里仍然看到。您知道,这些尖锐的金属尖刺着收据吗?

    In Word, you can select some text and then hit Ctrl+F3 to cut that text and place it in your spike. Want to copy instead of cut? Just hit undo after hitting Ctrl+F3—that undoes the cutting of the text but not the placing of that text onto the spike. You can keep doing this to keep adding more text to the spike.

    在Word中,您可以选择一些文本,然后按Ctrl + F3剪切该文本并将其放置在尖峰中。 要复制而不是剪切? 在按Ctrl + F3后只需单击undo(撤消)即可撤消对文本的剪切,但不会撤消将文本放置在尖峰上。 您可以继续执行此操作,以继续向峰值添加更多文本。

    When you’re ready to paste everything, place your insertion point where you want to paste the text you’ve collected and then hit Shift+Ctrl+F3. This pastes everything in the spike at that location and also clears everything from the spike. Each item you had in the spike is pasted as its own paragraph, making it a great way to create a list.

    当您准备粘贴所有内容时,请将插入点放置在要粘贴收集的文本的位置,然后按Shift + Ctrl + F3。 这会将所有内容粘贴在该位置的尖峰中,并清除尖峰中的所有内容。 您在秒杀中拥有的每个项目都将粘贴为自己的段落,这使其成为创建列表的好方法。

    Want to know more? Check out our complete guide to using the spike in Word.

    想知道更多? 查看有关使用Word中的尖峰的完整指南。

    使用Office更好的剪贴板 (Use Office’s Much Better Clipboard)

    The Windows Clipboard has always been fairly limited (although it is getting some upgrades soon). You copy something to the clipboard and then paste it somewhere else. The biggest limitation to the Windows Clipboard is that it only holds one thing at a time. Copy something new and whatever was there is now gone.

    Windows剪贴板一直受到相当有限的限制(尽管即将获得一些升级)。 您将某些内容复制到剪贴板,然后将其粘贴到其他位置。 Windows剪贴板的最大限制是一次只能容纳一件事。 复制新内容,现在什么都消失了。

    Enter the Office Clipboard, which can store up to 24 different items. You don’t even have to copy things in a different way. Just keep copying things by selecting them and hitting Ctrl+C and the Office Clipboard stores them for you.

    输入Office剪贴板,该剪贴板最多可以存储24个不同的项目。 您甚至不必以其他方式复制内容。 只需选择它们并按Ctrl + C并继续复制它们,Office剪贴板就会为您存储它们。

    When it’s time to paste content, you can open the Office Clipboard by clicking on the small arrow in the bottom right of the Home > Clipboard group.

    当需要粘贴内容时,可以通过单击“主页”>“剪贴板”组右下角的小箭头来打开Office剪贴板。

    You see a nice list of the last 24 things you’ve copied—text, images, whatever. You can then paste or delete individual items on the list.

    您会看到一个不错的列表,其中列出了您最近复制的24件事-文本,图像等。 然后,您可以粘贴或删除列表中的单个项目。

    00_lead_image_office_clipboard

    It’s a great tool (and one we’ve highlighted previously, so give it a go! You’ll wonder how you managed without it.

    这是一个很棒的工具(而且我们之前已经强调过,所以快去尝试吧!您会想知道如果没有它,您将如何进行管理。

    完全不使用剪贴板 (Don’t Use the Clipboard At All)

    Clipboards are all well and good, but the cool kids can copy and paste without using them at all.

    剪贴板都很好,但时尚的年轻人可以复制和不使用它们在所有粘贴。

    We’ve covered this before of course, but a reminder never hurts. If you’ve got something stored on the clipboard and you don’t want to lose it, you can select text in your Word document and then Ctrl+right-click somewhere else in the document to cut the text from the original location and move it there. You can also use Ctrl+Shift+right-click to copy the selected text instead of cutting it.

    我们当然已经介绍过了,但是提醒永远不会伤害您。 如果剪贴板上存储了某些内容,并且不想丢失,可以在Word文档中选择文本,然后按Ctrl +右键单击文档中的其他位置以从原始位置剪切文本并移动它在那里。 您也可以使用Ctrl + Shift +右键单击来复制选定的文本,而不是剪切它。

    将“插入”更改为“粘贴键” (Change “Insert” to be a “Paste Key”)

    By default, the Insert key on your keyboard toggles between Overtype and Insert modes, but you can change it to be a Paste key if you don’t use those other functions. Using the Insert key for pasting used to be a common function years ago, but Ctrl+V has become the default in the Windows world.

    默认情况下,键盘上的插入键可在改写和插入模式之间切换,但如果不使用其他功能,则可以将其更改为粘贴键。 多年前使用插入键进行粘贴是一种常见功能,但是Ctrl + V已成为Windows世界中的默认设置。

    If you have happy memories of using Insert to paste text in ye olden days, or you’ve got mobility issues that make it easier to use a single key, we’ve provided instructions on how to change Insert into a Paste key.

    如果您回忆起过去曾经使用插入粘贴文本的美好时光,或者遇到了使使用单个键更容易的移动性问题,我们提供了有关如何将插入更改为粘贴键的说明。



    As usual, Word has a lot more going on with even a simple thing like cut, copy and paste.  Have we missed a good trick?  Let us know in the comments!

    与往常一样,Word甚至还有很多简单的事情,例如剪切,复制和粘贴。 我们错过了一个好把戏吗? 让我们在评论中知道!

    翻译自: https://www.howtogeek.com/364765/how-to-cut-copy-and-paste-in-microsoft-word/

    bash剪切复制粘贴

    展开全文
  • 比如:富文本编辑器开发、ctrl + v 上传图片、支付宝红包口令自动复制(典型被玩坏儿了的用途) 剪贴板操作途径 剪贴板事件 操作剪贴板,最基础的方式为监听剪贴板事件。出于兼容性考虑,一般都只在剪贴板事件处理...

    剪贴板

    在前端日常开发中,对剪贴板相关的操作相对较少。但针对某些特定的应用场景,又是必不可少会用到的。比如:富文本编辑器开发、ctrl + v 上传图片、支付宝红包口令自动复制(典型被玩坏儿了的用途)

    剪贴板操作途径

    剪贴板事件

    操作剪贴板,最基础的方式为监听剪贴板事件。出于兼容性考虑,一般都只在剪贴板事件处理函数中访问 clipboardData ,非 IE 浏览器读数据只能在 onpaste 事件时可用。要使用剪贴板事件读写数据,就必须得用户主动使用快捷键或者右键菜单。所以监听板事件的主要应用场景是用户触发后对数据进行拦截处理。

    document.execCommand

    document.execCommand() 方法用于操纵可编辑区域的内容,例如最常用的 'copy' 命令可将选择区域的内容复制到剪贴板中,配合 window.getSelection() 方法就可以实现自动选择内容区域并写入内容到剪贴板。clipboard.js 库及红包口令自动复制主要就通过此方法实现的。

    此方法也有一些问题:

    • Chrome \ Safari 不支持 'paste' 命令
    • Chrome 不能直接在后台调用 'copy' 命令,需用户点击触发
    • IE 可直接在后台调用和点击触发 'copy' 命令,但会出现权限提示

    Asynchronous Clipboard API

    看过上面的介绍,你会发现,操作剪贴板处处受限,而且迂回曲折,更困难的是有些功能是无法实现的。但不可否认,造成这一困惑很大一部分原因是安全考虑。

    试想一下,当你浏览网页,点了下页面或者按钮,就复制了支付宝红包口令,会怎样?呃,还能接受?那么 'rm -rf /' 呢?(我用 Windows,我怕啥

    而做为 Clipboard API 新增内容的 Asynchronous Clipboard API 及 Clipboard Permissions API 就是为了解决上述问题而来的,专治各种迂回曲折及安全风险。截至目前(2018.03),Chrome 66 实现了部分功能,预测未来会有变化,本文不做详细介绍。暂归纳特点如下:

    • HTTPS 下才能调用
    • 页面处于活动选项卡才能调用
    • 基于 Promise,便于异步操作和错误处理
    • 实现了编程方式的粘贴(读)和复制(写)
    • 粘贴(读)和复制(写)权限已添加到 Permissions API 中 ,操作需要用户授权
    • Clipboard Permissions API 目前仅适用于 Asynchronous Clipboard API。根据规范,未来会添加到所有 Clipboard API 中

    处理粘贴 ( paste )

    对于粘贴,目前广泛支持的仅有快捷键及右键菜单触发,而 IE 支持的编程方式使用场景不多,这里不做介绍。

    纯文本或带格式文本

    对纯文本的拦截

    El.addEventListener('paste', event => {
        event.preventDefault();
        let clipboardData = event.clipboardData || window.clipboardData, // IE 兼容
            plainText = clipboardData.getData('text');  // 无格式文本
        
        // ... 对 plainText 进行一系列处理操作
        
        document.execCommand('insertText', false, plainText);  // 插入无格式文本
        document.execCommand('paste', false, plainText);  // IE 兼容
    })
    复制代码

    如需对有格式文本进一步处理,可用以下方法转换为 DOM 结构,再进行操作。(IE 浏览器无法获得 'text/html' 所以无法实现下面的功能)

        /* 仍在上述事件处理函数中,下面均省略 */
        let plainHTML = clipboardData.getData('text/html'),   // 有格式文本
            domContainer = document.createElement('div');
        domContainer.innerHTML = plainHTML;
        
        // ... 对 domContainer 进行一系列处理操作
        
        El.innerHTML = domContainer.innerHTML; // 使用 innerHTML 方式整体插入
        El.appendChild(nodeOfDomContainer); // 只插入其中某个节点
    复制代码

    图片

    如 DOM 结构中含有图片标签,可考虑上传图片至服务器中,然后将其 src 替换为服务器返回的地址。

    如复制的是单个图片(例如 word 中复制过来的),可以使用下述方法得到图片的 DataURL,再上传。(IE 浏览器粘贴图片会自动生成带 DataURL 的图片标签,所以不需要下述方法)

        let items = clipboardData.items;
        for (let i = 0; i < items.length; i++) {
            let item = items[i];
            if (/image/.test(item.type)) {
                let file = item.getAsFile(), // 得到文件对象
                    reader = new FileReader();
                reader.onload = function() {
                    upload(reader.result) // 上传图片,伪代码
                }
                reader.readAsDataURL(file); // 读取为 DataURL / Base64
            }
        }
    复制代码

    处理复制 ( copy )

    快捷键及右键菜单触发

    常见应用场景是拦截复制操作,对复制内容加工后再写入剪贴板,例如在知乎复制大段文本后加入版权信息。

    El.addEventListener('copy', event => {
        event.preventDefault();
        let clipboardData = event.clipboardData || window.clipboardData,
            text = window.getSelection().toString();
        
        // ... 对 text 进行一系列处理操作
        
        clipboardData.setData('text/plain', text); // 将处理好的 text 写入剪贴板
        clipboardData.setData('text', text); // IE 兼容
    })
    复制代码

    编程式复制

    虽是编程式复制,但无法做到完全自动复制,需要用户先触发 点击 事件。clipboard.js 库及红包口令自动复制(在 document 上监听 click 事件)主要就通过此方法实现的。

    固定内容

    Button.addEventListener('click', event => {
        let sometext = '红包码 xxxxxx',
            hiddenInput = document.createElement('input');
        hiddenInput.value = sometext;
        hiddenInput.setAttribute('readonly', '');
        hiddenInput.style.position = 'absolute';
        hiddenInput.style.left = '-9999px';
        document.body.appendChild(hiddenInput);
        hiddenInput.select();
        hiddenInput.setSelectionRange(0, hiddenInput.value.length); // ios
        document.execCommand('copy');
        document.body.removeChild(hiddenInput);
    })
    复制代码

    复制某个元素内的文本

    Button.addEventListener('click', event => {
        let someElement = document.getElementById('someelement'),
            selection = window.getSelection(),
            range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
        document.execCommand('copy');
    })
    复制代码

    可以发现,目前对剪贴板的操作真是千奇百怪,希望新的 API 快快成为现实吧(做梦)!

    参考

    [1] Clipboard API and events | w3c

    [2] clipboard.js | Github

    [3] 利用 javascript 实现富文本编辑器 | 掘金

    [4] 富文本编辑器初探 | 掘金

    [5] JavaScript复制内容到剪贴板 | 掘金

    展开全文
  • 复制粘贴应该是所有人最常用的功能了。打开浏览器,选中一段内容,然后快捷键ctrl-c,再新建一个文本文件,打开,ctrl-v粘贴,最后ctrl-s保存,这一系列的动作出现的频率估计也不低吧,通常这样做的后果,就是桌面...
  • 有时候我们可能需要复制UILabel上的文本,或者UIImageView的图片,而UILabel和UIImageView默认是不响应Touch事件的,也无法复制,那么我们就需要自己实现一个可复制的UILabel。新添加一个类继承自UILabel: ...
  • 今天的问题就是大家用excel会经常遇到的问题:C列数据是筛选状态,现在想把D列数据,复制粘贴到E列,怎么做呢?wps有一个功能是粘贴到可见单元格,但是excel没有,我们用excel怎么实现呢?请点击输入图片描述1、下图...
  • 图 / 引用 / Ditto 剪贴板工具 复制粘贴复制粘贴,复制再粘贴。 这种重复性的按键,已经成为了我们生活中的一环,这种干燥的工作,不光无聊,也会影响我们工作的效率。 Windows 的复制粘贴,应该是经常使用的。 ...
  • 发明「复制粘贴」的那位老奶奶 Evelyn Berezin 去世了,她的发明曾经让秘书文员从重复劳动中解放,也奠定了后来 Word 等文档编辑软件的基础功能。 图片来自:computerhistory.org 12 月 8 日,发明史上第一个...
  •  想要成为架构师的程序员一生必读的书,分为以下四个部分:  1.Coding Practice(编程实践系列)  2.Architecture Design(架构与设计系列)  3.Methodology(方法学系列)  4.Thought Leadership(思想与领导力...
  • 将E盘下的sq.jpg上传到wsq文件夹下成为yy.jpg。 其中wsq文件夹不可以自动创建需要自己手动创建才行 package com . pdsu . bjsxt ; import java . io . FileInputStream ; import java . io . ...
  • 为什么你应该停止复制粘贴

    千次阅读 2020-09-04 03:53:43
    前言 我写代码是为了好玩,也是为了生活。很久以前,我曾经复制和粘贴的速度比闪电棒还快。我已经掌握了所有的快捷键。_cutting,_partial ...我不会再复制粘贴了! 我知道 I know. 疯了吧?好吧,这种做法一开始确
  • 大数据文摘出品 ...著名学术打假侦探克莱尔·弗朗西斯称,在锁定塞门扎作为“造假嫌疑人”,她已经找到了20多份有问题的论文,并在PubPeer上标记了出来,之后又发现塞门扎的研究发现与另一位诺...
  • 好久没有编程了,最近需要完成一个小功能,为了方便,需要粘贴图片后上传到后台。前台编辑器用tinymce(N年前用过,我也就知道这个编辑器而已。这次使用下来感觉文档更丰富了),后台我用的Flask。昨天从下午4点开始...
  • 简单易用的剪切板复制粘贴工具尤为必要,macz小编精心为您网罗搜集,几款剪贴管理器,让您的复制、粘贴更加方便。 iClip for Mac(剪切板管理软件) iClip for Mac是一种多重剪贴板和剪贴簿实用软件,适用于苹果系统...
  • 1:copy到剪贴板 cat tmp.txt | pbcopy 2:paste大文本 ...从excel中copy出来,然后通过pbpaste粘贴后,文本里的换行可能会成为^M,所有数据在一行显示:这时可通过vim运行"%s/^M/\r/g" ^M=Ct...
  • VBA,把excel单元格复制图片

    千次阅读 2017-11-22 18:55:11
    网上找的 Sub 导出为图片() Sheets("日报").Range("A1:Q80").Select Selection.Copy Selection.CopyPicture '选区复制图片 With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width,
  • 前言 项目使用的是vue框架,需要一个markdown的编辑框,就在npm上找了一下,发现...但是这个vue-simplemde不支持图片拖拽上传、粘贴上传,也不能说是因为这个vue-simplemde,因为vue-simplemde只是对simplemde的基础...
  • 很久以前,我曾经复制粘贴的速度比闪电棒还快。我已经掌握了所有的快捷键。_cutting,_partial selection,_当然还有_past_。这样做的目的是为了节省时间。但是,当你复制代码时,通常需要对粘贴的部分进行细微的...
  • 用户指定使用某一种特定格式粘贴(比如只粘贴文字或只粘贴图片等)。 ---- Windows定义了很多能够通过剪贴板传输的标准格式(见表1),OLE也定义了很多   特殊 的格式。应用程序可以通过获取更加详细的信息...
  • 很久以前,我已经复制粘贴的速度比闪电棒还快。我曾经把握了所有的快捷键。_cutting,_partial selection,_当然还有_past_。这样做的目标是为了节省时间。然而,当你复制代码时,通常须要对粘贴的局部进行轻微的...
  • 在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView 2、UITextField 3、UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。 1、UIPasteboard:我们...
  • android图片尺寸大小设置

    万次阅读 2018-08-17 10:19:45
    贴上代码,以后直接复制粘贴使用,不用再计算,再百度了!! 方法一:(按照图片尺寸设置、方法中viewRootBanner为图片或者装载图片的控件banner) 例如:750*286尺寸 的图片 //设置图片宽高比 float scale = ...
  • 这里已将其封装成为一个类,该类只需传入TextBox,即可为其生成右键菜单,并具有相应的功能,具体代码,一会儿贴上,使用方法,附于代码下方,另外还有相关图标,但不知道怎么传附件,呵呵,所以图片可能传不了了,...
  • UIPasteboard 粘贴

    2015-10-30 21:28:17
    有时候我们可能需要复制UILabel上的文本,或者UIImageView的图片,而UILabel和UIImageView默认是不响应Touch事件的,也无法复制,那么我们就需要自己实现一个可复制的UILabel。新添加一个类继承自UILabel: ...
  • iOS粘贴板的实现

    千次阅读 2016-12-02 17:45:45
    今天由于某些原因,要改动一些页面,以前设计好的一些页面暂时不再使用,要求新加一个用户长按复制图片上内容(固定)的功能,因此才会有这篇文章。 今天的主角:UIPasteboardUIPasteboardUIPasteboard一般不会单独...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,401
精华内容 4,160
关键字:

复制粘贴后成为图片