React native 使用Swift响应本机自定义UI组件:如何在事件中访问reactTag
在Swift中创建自定义UI组件时,如何访问React native 使用Swift响应本机自定义UI组件:如何在事件中访问reactTag,react-native,React Native,在Swift中创建自定义UI组件时,如何访问reactTag以触发事件返回React Native 使用以下代码在Swift中创建具有按钮的自定义组件: 单击按钮时,使用bridge.eventDispatcher到sendInputEventWithName应该在React原生JavaScript代码中引发事件。 这是通过将reactTag作为事件字典的一部分传递来完成的。 但是,我不清楚如何访问reactTag属性,甚至不清楚它在哪里可用 (仔细研究一下,它似乎出现在名为RCTShadowV
reactTag
以触发事件返回React Native
使用以下代码在Swift中创建具有按钮的自定义组件:
单击按钮时,使用bridge.eventDispatcher
到sendInputEventWithName
应该在React原生JavaScript代码中引发事件。
这是通过将reactTag作为事件字典的一部分传递来完成的。
但是,我不清楚如何访问reactTag属性,甚至不清楚它在哪里可用
(仔细研究一下,它似乎出现在名为RCTShadowView
的东西上,但是在我的阴影视图上,reactTag总是nil
)
迅捷的
//FooView.swift
导入UIKit
@objc(FooView)
类FooView:UIView{
@objc var桥:RCTBridge!
所需的重写初始化(帧:CGRect){
super.init(frame:frame)
let button=ui按钮(帧:CGRect(x:10,y:10,宽度:244,高度:244))
addTarget(self,action:“buttonClicked:”,forControlEvents:.TouchUpInside)
self.addSubview(按钮)
}
已单击func按钮(发送方:任何对象?){
让事件=[
“目标”:“”/FooView.swift
需要能够看到self.reactag
,它在UIView+React.h
中声明
#import "UIView+React.h"
这需要添加到项目的桥接头.h
#import "UIView+React.h"
旁注:您可能不想直接使用sendInputEventWithName
,但使用给定答案的快速变体您知道如何获取/设置reactTag吗?我没有。我最终使用的是self.bridge.eventDispatcher.sendAppEventWithName(“buttonClicked”,body:[“button”:“foo”]))
。这显然不像我们有标签那样优雅,但它至少可以识别事件并收听。@Jones你能提供你的例子的github报告吗?如果你使用Objective-C而不是使用#import
#import "UIView+React.h"