Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 使用Swift响应本机自定义UI组件:如何在事件中访问reactTag_React Native - Fatal编程技术网

React native 使用Swift响应本机自定义UI组件:如何在事件中访问reactTag

React native 使用Swift响应本机自定义UI组件:如何在事件中访问reactTag,react-native,React Native,在Swift中创建自定义UI组件时,如何访问reactTag以触发事件返回React Native 使用以下代码在Swift中创建具有按钮的自定义组件: 单击按钮时,使用bridge.eventDispatcher到sendInputEventWithName应该在React原生JavaScript代码中引发事件。 这是通过将reactTag作为事件字典的一部分传递来完成的。 但是,我不清楚如何访问reactTag属性,甚至不清楚它在哪里可用 (仔细研究一下,它似乎出现在名为RCTShadowV

在Swift中创建自定义UI组件时,如何访问
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"