- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 iOS native View ,它是一个带有 map View 的 UIView 和一个 UIView。该 map 有一个名为“regionDidChangeAnimated”的事件,我想将事件发送到 React Native。但是 reactTag 不对。
- (UIView *)view
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIView *frameView = [[UIView alloc] initWithFrame:screenRect];
CGRect frameRect = frameView.bounds;
MAMapView *mapView;
mapView = [[MAMapView alloc] initWithFrame:frameRect];
self.mapview = mapView;
mapView.delegate = self;
[frameView addSubview:mapView];
RCTFixedPin* pin = [[RCTFixedPin alloc] initWithFrame:CGRectMake(0, 0, screenRect.size.width, 260)];
pin.userInteractionEnabled = NO;
[frameView addSubview:pin];
return frameView;
}
- (void)mapView:(MAMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
if (self.dragging) {
self.dragging = NO;
}
MACoordinateRegion region = mapView.region;
NSDictionary *event = @{
***@"target": ,***
@"region": @{
@"latitude": @(region.center.latitude),
@"longitude": @(region.center.longitude),
@"latitudeDelta": @(region.span.latitudeDelta),
@"longitudeDelta": @(region.span.longitudeDelta),
}
};
[self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event];
}
最佳答案
如果您查看他们已实现的原生 View 的 react-native 代码:
https://github.com/facebook/react-native/tree/master/React/Views
看起来文档已经过时了,而不是使用:
[self.bridge.eventDispatcher sendInputEventWithName...
您应该执行以下操作:
@property (nonatomic, copy) RCTBubblingEventBlock onTopChange;
self.onTopChange(@{
@"region": @{
@"latitude": @(region.center.latitude),
@"longitude": @(region.center.longitude),
@"latitudeDelta": @(region.span.latitudeDelta),
@"longitudeDelta": @(region.span.longitudeDelta),
}
};
还有一个 RCTDirectEventBlock
我不确定它和 RCTBublingEventBlock
有什么区别
查看 RCTComponent.m
第 160-169 行,它应该会自动为您处理目标设置:
// Special case for event handlers
__weak RCTViewManager *weakManager = _manager;
setterBlock = ^(id target, __unused id source, id json) {
__weak id<RCTComponent> weakTarget = target;
((void (*)(id, SEL, id))objc_msgSend)(target, setter, [RCTConvert BOOL:json] ? ^(NSDictionary *body) {
body = [NSMutableDictionary dictionaryWithDictionary:body];
((NSMutableDictionary *)body)[@"target"] = weakTarget.reactTag;
[weakManager.bridge.eventDispatcher sendInputEventWithName:RCTNormalizeInputEventName(name) body:body];
} : nil);
};
还要确保在 Manager 类中添加:
RCT_EXPORT_VIEW_PROPERTY(onTopChange, RCTBubblingEventBlock)
并且不要忘记在您的 JSX 中实际连接事件:
<MyComponent onTopChange={this.handleOnTopChange}/>
关于ios - React Native iOS Native View 使用适当的 reactTag 发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36029820/
我想按照此处的说明在我的 React 16.12 应用程序中使用 ReactTags -- https://www.npmjs.com/package/react-tag-input 。我安装了rea
我想按照此处的说明在我的 React 16.12 应用程序中使用 ReactTags -- https://www.npmjs.com/package/react-tag-input 。我安装了rea
我看过使用的教程 -(void)mapView:(RCTMap *)mapView regionDidChangeAnimated:(BOOL)animated 函数,然后使用 @"target":
什么是 AccessibilityInfo.setAccessibilityFocus(reactTag) 方法中的 reactTag 参数? react native documentation不要
我有一个 iOS native View ,它是一个带有 map View 的 UIView 和一个 UIView。该 map 有一个名为“regionDidChangeAnimated”的事件,我想
我有一个要测试的模块。该模块正在使用其他外部模块,开 Jest 很难解决它们。 它正在将基本路径解析为:./node_modules/react-tag-input/dist-modules/ 代替:
在 Swift 中创建自定义 UI 组件时,如何访问 reactTag触发一个事件回到 React Native? 使用以下代码在 Swift 中创建一个具有按钮的自定义组件: 单击按钮时,使用 br
这是我尝试在 Iphone 5s 上部署 react-native IOS 应用程序时收到的错误消息: Terminating app due to uncaught exception 'NSInv
我是一名优秀的程序员,十分优秀!