React Native Clipboard - 如何复制图像或文本以外的任何内容?

时间:2017-06-03 19:39:10

标签: react-native clipboard react-native-android react-native-ios

在React Native中,使用剪贴板,如何在剪贴板中放置图像?设置剪贴板内容的唯一方法是“setString”。你能否设置图像或其他内容而不是字符串?

1 个答案:

答案 0 :(得分:8)

可以桥接本机iOS剪贴板API并公开setImage方法。要做到这一点,你需要:

  1. 添加本机模块头文件Clipboard.h
  2. 
    
    #import "RCTBridgeModule.h"
    @interface Clipboard : NSObject <RCTBridgeModule>
    @end
    &#13;
    &#13;
    &#13;

    1. 添加本机模块实施文件Clipboard.m。我们需要复制base64编码的图像,但您可以使用任何其他图像表示来调整代码:
    2. &#13;
      &#13;
      #import <UIKit/UIKit.h>
      #import <MobileCoreServices/UTCoreTypes.h>
      #import "Clipboard.h"
      
      @implementation Clipboard
      
      RCT_EXPORT_MODULE(BetterClipboard); // this is how our native module will be named
      
      RCT_EXPORT_METHOD(addBase64Image:(NSString *)base64Image) {
        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
        [pasteboard setPersistent:YES];
        
        NSData *imageData = [[NSData alloc]initWithBase64EncodedString:base64Image options:NSDataBase64DecodingIgnoreUnknownCharacters];
      
        [pasteboard setImage:[UIImage imageWithData:imageData]];
      }
      
      @end
      &#13;
      &#13;
      &#13;

      1. 然后你可以在你的React应用程序中使用它:
      2. &#13;
        &#13;
        import { NativeModules } from 'react-native';
           
        NativeModules.BetterClipboard.addBase64Image(base64EncodedImage);
        &#13;
        &#13;
        &#13;

        不幸的是,我不知道如何为Android做同样的事情。