mirror of
https://github.com/wu736139669/RN_AWord.git
synced 2026-08-05 06:24:39 +00:00
79 lines
2.2 KiB
Objective-C
79 lines
2.2 KiB
Objective-C
//
|
|
// ASHUIMenuControllerManager.m
|
|
// testdemo
|
|
//
|
|
// Created by xmfish on 16/2/19.
|
|
// Copyright © 2016年 Facebook. All rights reserved.
|
|
//
|
|
|
|
#import "ASHUIMenuControllerManager.h"
|
|
#import <UIKit/UIKit.h>
|
|
#import "RCTConvert.h"
|
|
#import "RCTLog.h"
|
|
#import "RCTUtils.h"
|
|
#import "RCTBridge.h"
|
|
#import "RCTUIManager.h"
|
|
#import "UIViewController+Category.h"
|
|
@implementation ASHUIMenuControllerManager
|
|
{
|
|
NSMapTable *_callbacks;
|
|
UIMenuController *_menu;
|
|
}
|
|
RCT_EXPORT_MODULE();
|
|
- (dispatch_queue_t)methodQueue
|
|
{
|
|
return dispatch_get_main_queue();
|
|
}
|
|
RCT_EXPORT_METHOD(hideMenu)
|
|
{
|
|
if (_menu) {
|
|
[_menu setMenuVisible:NO];
|
|
}
|
|
}
|
|
RCT_EXPORT_METHOD(showMenuWithTitleArr:(NSArray*)titleArray withXPoint:(nonnull NSNumber*)xpoint withYPoint:(nonnull NSNumber*)ypoint withCallback:(RCTResponseSenderBlock)callback)
|
|
{
|
|
if (!_callbacks) {
|
|
_callbacks = [NSMapTable strongToStrongObjectsMapTable];
|
|
}
|
|
|
|
if(titleArray.count>0){
|
|
NSMutableArray* itemArr = [NSMutableArray array];
|
|
[titleArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:obj action:@selector(meunClick:)];
|
|
[itemArr addObject:menuItem];
|
|
}];
|
|
|
|
UIViewController *controller = RCTKeyWindow().rootViewController;
|
|
|
|
while (controller.presentedViewController) {
|
|
controller = controller.presentedViewController;
|
|
}
|
|
|
|
if (controller == nil) {
|
|
RCTLogError(@"Tried to display MenuController but there is no application window. options: %@", titleArray);
|
|
return;
|
|
}
|
|
controller.rnDelegate = self;
|
|
UIView *sourceView = controller.view;
|
|
[sourceView becomeFirstResponder];
|
|
|
|
|
|
UIMenuController *menu = [UIMenuController sharedMenuController];
|
|
[menu setMenuItems:itemArr];
|
|
[menu setTargetRect:CGRectMake(xpoint.floatValue, ypoint.floatValue, 1.0, 1.0) inView:sourceView];
|
|
[menu setMenuVisible:YES animated:YES];
|
|
_menu = menu;
|
|
[_callbacks setObject:callback forKey:menu];
|
|
}else{
|
|
callback(@[@"no title"]);
|
|
}
|
|
}
|
|
|
|
-(void)meunClick:(UIMenuController*)menuController
|
|
{
|
|
if ([_callbacks objectForKey:menuController]) {
|
|
((RCTResponseSenderBlock)[_callbacks objectForKey:menuController])(@[@"no title", @1]);
|
|
}
|
|
}
|
|
@end
|