React Native Clipboard-как скопировать изображение или что-нибудь, кроме текста?
В React Native, с буфером обмена, как я могу поместить изображение в буфер обмена? Единственный метод, чтобы установить содержимое буфера обмена - "записи". Вы не можете установить изображения или другой контент, кроме строк?
1 ответ:
Можно связать собственный API буфера обмена iOS и предоставить метод
setImage
. Для этого вам нужно:
- добавить собственный файл заголовка модуля
Clipboard.h
:
#import "RCTBridgeModule.h" @interface Clipboard : NSObject <RCTBridgeModule> @end
- добавьте файл реализации собственного модуля
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
- и затем вы можете использовать его в своем React применение:
К сожалению, я не знаю, как сделать то же самое для Android.import { NativeModules } from 'react-native'; NativeModules.BetterClipboard.addBase64Image(base64EncodedImage);