React Native Clipboard-как скопировать изображение или что-нибудь, кроме текста?


В React Native, с буфером обмена, как я могу поместить изображение в буфер обмена? Единственный метод, чтобы установить содержимое буфера обмена - "записи". Вы не можете установить изображения или другой контент, кроме строк?

1 5

1 ответ:

Можно связать собственный API буфера обмена iOS и предоставить метод setImage. Для этого вам нужно:

  1. добавить собственный файл заголовка модуля Clipboard.h:

#import "RCTBridgeModule.h"
@interface Clipboard : NSObject <RCTBridgeModule>
@end
  1. добавьте файл реализации собственного модуля Clipboard.m. Нам нужно было скопировать кодированные изображения base64, но вы можете настроить код, используя любое другое представление изображения:

#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
  1. и затем вы можете использовать его в своем React применение:

import { NativeModules } from 'react-native';
   
NativeModules.BetterClipboard.addBase64Image(base64EncodedImage);
К сожалению, я не знаю, как сделать то же самое для Android.