TouchableOpacity onPress не работает внутри ScrollView

(Только для iOS) <TouchableOpacity> не отвечает, если находится внутри <ScrollView> :

  1. Он работает правильно в симуляторе, но не в реальном устройстве,
  2. keyboardShouldPersistTaps="always" не имеет значения
  3. Частичный код:<ScrollView style={styles.scrollView}> <TouchableOpacity style={styles.xButton} onPress={() => this._onClose()}>

какие-либо предложения?

--- Обновление кода -----

<ScrollView style={styles.scrollView}>
   <TouchableOpacity style={styles.xButton} onPress={() => this._onClose()}>
    <Image style = {styles.xImg} source = {require('../../images/xbtn.png')}/>
   </TouchableOpacity>
     {this._renderPricing()}
     {this._renderServices()}
 </ScrollView>

и стиль выглядит так:

scrollView:{ 
    width: width,
    height: height,
}, xButton: {
    position: 'absolute',
    zIndex: 1,
    marginTop: '1%',
    marginRight: '3%',
    alignSelf: 'flex-end',

},xImg: {
    resizeMode: 'contain',
    aspectRatio: .6,
    opacity: 0.5,
},

person Kat    schedule 04.10.2017    source источник
comment
Что такое сообщение об ошибке?   -  person Pat Needham    schedule 04.10.2017
comment
Вы пробовали релизную сборку?   -  person MattyK14    schedule 04.10.2017
comment
@PatNeedham К сожалению, я не получаю никаких ошибок. Если я нажму кнопку несколько раз, в конце концов, это сработает. Я видел похожие вопросы, в которых говорилось, что <TouchableOpacity> внутри <ScrollView> работает, только если вы дважды нажмете на него, но здесь это не так. Да, @MattyK14 Я попробовал релизную сборку, и она ведет себя так же.   -  person Kat    schedule 04.10.2017
comment
Не могли бы вы уточнить немного больше, предоставив нам свой код? Убедитесь, что ваш компонент TouchableOpacity имеет определенную ширину и высоту. Кроме того, попробуйте добавить в него какой-нибудь пустой дочерний элемент, например, ‹View /›.   -  person    schedule 04.10.2017
comment
@BluDay Я обновил свой вопрос. Так что все, что у меня есть, работает правильно, за исключением TouchableOpacity, который, как я упоминал выше, работает в симуляторе.   -  person Kat    schedule 04.10.2017
comment
Почему вы хотите использовать TouchableOpacity, когда вы можете использовать TouchableHighlight или TouchableWithoutFeedback? Вам действительно нужен эффект непрозрачности на вашей кнопке?   -  person    schedule 04.10.2017
comment
В прошлый раз, когда я использовал его, я помню, что TouchableHighlight имел эффект, который мне не нужен, но я попробую оба и дам вам знать.   -  person Kat    schedule 04.10.2017
comment
Попробуйте обернуть сенсорную непрозрачность в стандартном представлении, мне кажется, это работает.   -  person Ryan Turnbull    schedule 04.10.2017
comment
Проблема была решена. Это было вызвано тем, что в моих отдельных методах рендеринга this._renderPricing и т. д. и т. д. я слишком много раз менял состояние, а поток JS был занят, поэтому TouchableOpacity не мог реагировать на события касания, см. facebook.github.io/react-native/docs/performance.html для получения дополнительной информации, если вам нужно. Большое спасибо за ваши ответы.   -  person Kat    schedule 05.10.2017


Ответы (1)


Проблема была решена. Это было вызвано тем, что в моих отдельных методах рендеринга this._renderPricing и т. д. я слишком много раз менял состояние ????, поэтому поток JS был занят, поэтому TouchableOpacity не мог реагировать на события касания, см. Документация RN для получения более подробных объяснений, если это необходимо. Большое спасибо за ваши ответы.

person Kat    schedule 22.04.2020