Как включить навигатор ящика в реагировать родной?

Просто для удовольствия, немного менее элегантная версия, которая реализует кеширование, предложенное Marc:

    public static string TransformXMLToHTML(string inputXml, string xsltString)
    {
        XslCompiledTransform transform = GetAndCacheTransform(xsltString);
        StringWriter results = new StringWriter();
        using (XmlReader reader = XmlReader.Create(new StringReader(inputXml)))
        {
            transform.Transform(reader, null, results);
        }
        return results.ToString();
    }

    private static Dictionary<String, XslCompiledTransform> cachedTransforms = new Dictionary<string, XslCompiledTransform>();
    private static XslCompiledTransform GetAndCacheTransform(String xslt)
    {
        XslCompiledTransform transform;
        if (!cachedTransforms.TryGetValue(xslt, out transform))
        {
            transform = new XslCompiledTransform();
            using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
            {
                transform.Load(reader);
            }
            cachedTransforms.Add(xslt, transform);
        }
        return transform;
    }
0
задан Martijn Vissers 18 January 2019 в 16:22
поделиться

1 ответ

Из-за способа, которым вы настроили изображение вашего меню в первом. Вы обернули изображение в другой TouchableOpacity, что означает, что внутренний TouchableOpacity воспринимает событие касания пользователя. На самом деле это не то поведение, которое вы хотите, потому что вы хотите, чтобы TouchableOpacity в headerLeft был получателем ввода. Так что просто удалите «лишнее» TouchableOpacity.

// Inside Header
navigationOptions: ({ navigation }) => ({
    headerLeft:
    <TouchableOpacity onPress={() => {navigation.dispatch(DrawerActions.toggleDrawer())} }>
        <MenuImage navigation={navigation}/>
    </TouchableOpacity>,

//Created component and added inside navigationOptions
const MenuImage = ({navigation}) => {
    if(!navigation.state.isDrawerOpen){
        // No need of Touchable here. Since you want the above Touchable to pick up the onPress event.
        return <Image source={require('../assets/images/menu.png')} style={{width: 24, height: 24, resizeMode: 'contain' ,marginLeft: 15}}/>. 
    }else{
        return <MenuIcon style={{paddingLeft: 10, paddingRight: 10}} name="md-arrow-back" size={30} color="black"/>
    }
}

Причина, по которой работает второй пример, заключается просто в том, что нет дополнительной Touchable обработки события onPress.

0
ответ дан Sean Wang 18 January 2019 в 16:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: