嵌套可触摸绝对位置

Dan*_*iel 12 reactjs react-native

我需要实现一个可以单击对象的接口,但是该对象的一个​​区域执行另一个操作,如下所示:

|-----------|
|        |  | -> clicking on this small area does an action
|        ---|
|           |
|           |
|           | -> clicking on this area does another action
|           |
|-----------|
Run Code Online (Sandbox Code Playgroud)

我做了类似这种结构的实现:

<View> // Container
  <Touchable onPress={do X}> // Large area
  <Touchable onPress={do Y} style={{position: absolute, top: 0, right: 0}}> // Small area
</View>
Run Code Online (Sandbox Code Playgroud)

问题是小区域永远不会激活onPress道具.该事件总是在大面积上触发.

有人可以帮我弄这个吗?

谢谢!

Nad*_*bit 4

我不确定您是否有任何样式要显示小容器,但如果没有宽度或高度,它将不会触发,因此请检查以确保您已设置宽度和高度:

smallContainer: {
    width: 120, // set this
    height:100, // set this
    position:'absolute',
    top:0,
    right:0
}
Run Code Online (Sandbox Code Playgroud)

我已经让你的设置在这里工作了。代码也在下面。

https://rnplay.org/apps/StpOXg

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TouchableHighlight
} = React;

var SampleApp = React.createClass({
  render() {
    return (
      <View style={styles.container}>
        <View style={{flexDirection:'row'}}> 
          <TouchableHighlight onPress={ () => alert('largeContainer') } style={styles.container1}>
                    <View><Text>Hello1</Text></View>
            </TouchableHighlight>
          <TouchableHighlight onPress={ () => alert('smallContainer') }  style={styles.container2}>
                <View><Text>Hello2</Text></View>
            </TouchableHighlight>
        </View>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1
  },
  container1: {
    width:320,
    height:300,
    backgroundColor: 'red'
  },
  container2: {
    width: 120,
    height:100,
    position:'absolute',
    backgroundColor: 'green',
    top:0,
    right:0
  }
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);
Run Code Online (Sandbox Code Playgroud)