响应本机可触摸的突出显示和可触摸的本机反馈以制作菜单项

用户1354934

我正在尝试实现基本的抽屉,但是我对文档感到困惑。

有一个TouchableHighlight,有一个TouchableNativeFeedback。

TouchableNativeFeedback仅适用于Android。那么,如何最好地处理我的MenuItem组件,以便它可以同时处理Android和IOS?

这是到目前为止的内容,我不确定如何在此处处理不同平台特定的可触摸内容:

import React, { Component, PropTypes } from 'react';
import { TouchableHighlight, TouchableNativeFeedback, Platform, View, Text } from 'react-native';

export class MenuItem extends Component {

  handleAndroid() {

  }

  handleIOS() {

  }

  renderMenuItem() {
    return (
      <View style={styles.container}>
        <Text style={styles.text}>
          {this.props.text}
        </Text>
      </View>
    );
  }
  render() {
    return (

    );
  }
}

在Android上,我只需要使用TouchableNativeFeedback吗?

乔治斯

就像您说的那样,TouchableNativeFeedback它仅是Android,因此不适用于iOS。如果您想要一个既适用于这两种解决方案的解决方案,请相应地使用TouchableHighlight并设置其样式。例如,其underlayColor道具可让您设置“触摸有效时将显示的底衬颜色”。

编辑:

如果要TouchableNativeFeedback用于Android和TouchableHighlightiOS,则应执行以下操作:

import { Platform } from 'react-native'
...

render() {
    if (Platform.OS === 'android') {
       return (
          <TouchableNativeFeedback> 
               ... 
          </TouchableNativeFeedback>    
       )
    } else {
       return (
          <TouchableHighlight> 
               ... 
          </TouchableHighlight>    
       )
    }
}

编辑2:

另外,您可以为每个平台创建一个自定义组件并使用文件扩展名。例如:

MyButton.ios.js
MyButton.android.js

将这两个放在同一文件夹中,然后MyButton用作常规组件:

import MyButton from '../path/to/component/MyButton'
...

render() {
   <MyButton/>
}

当您要在多个地方使用此组件时,这很整洁,因为您不会用if-else块填充代码。

在这里,您可以阅读有关平台特定代码的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章