我有一个组件,可用于列表结果中的单元格和地图中的详细信息标注。
TouchableOpacity
查看列表时,onPress
正常工作。但是,在地图标注中使用StationCellView
时,不会调用// from MapView
renderMarkers() {
return this.state.stations.map(station => {
const logo = require("../assets/logos/BOLTIcon.jpg");
return (
<Marker
coordinate={{
latitude: station.location.lat,
longitude: station.location.lng
}}
key={station.location.lat.toString() + station.location.lng.toString()}
>
<Callout>
<StationCellView station={station}/>
</Callout>
</Marker>
);
});
}
render() {
return (
<View style={styles.container}>
<MapView
style={{ flex: 1 }}
region={this.state.region}
showsUserLocation={true}
>
{this.renderMarkers()}
</MapView>
<Callout style={styles.searchCallout}>
<TextInput
onChangeText={searchText => this.setState({ searchText })}
// ... props ...
/>
</Callout>
</View>
);
}
方法:
this.props.navigation.navigate
请暂时忽略在新闻处理程序中调用{{1}}的问题。我已经在列表视图中解决了该问题,一旦触发处理程序,便会在地图视图中对其进行修复。
当我从列表视图中单击Touchables时,调试器控制台中将显示“单击文本”。当我从地图标注中单击“可触摸”时,任何地方都不会发生任何事情。
可能会注意到,当我第一次单击地图中的Touchable时,不透明度会发生变化,但是如果再次单击它,则什么也不会发生。
我猜想在视图层次结构中映射和标注的工作方式存在问题吗?有人知道吗?