2016-11-30 67 views
0

我有一個奇怪的問題。我寫了一個簡單的播放器應用程序與原生反應,在模擬器中一切都很好。但是當涉及到真實設備時,其播放按鈕無法正常工作。我嘗試了iPhone 6s和iPhone 5上的應用程序。問題是播放按鈕在第二次點擊時工作。第一個水龍頭什麼都不做。TouchableHighlight單擊不工作兩件作品

這裏是我的整個渲染代碼:

render() { 
    let playIcon = this.state.isPlaying ? 'pause' : 'play'; 
    let titleA = 'Set A: ' + (this.state.isASet ? this._toTime(this.state.pointA) : '-'); 
    let titleB = 'Set B: ' + (this.state.isBSet ? this._toTime(this.state.pointB) : '-'); 
    let time = this._toTime(this.state.time); 
    let remaining = this._toTime(this.state.duration - this.state.time); 
    return (
     <View style={styles.container}> 
     <View style={styles.info}> 
      <Text>Name: {this.props.song.name}</Text> 
      <Text>Artist: {this.props.song.artist.name}</Text> 
      <Text># of channels: {this.props.song.tracks.length}</Text> 
     </View> 
     <View style={styles.channels}> 
      { 
      this.props.song.tracks.map((track, index) => { 
       return (
       <VolumeSlider 
        key={index} 
        title={track.name} 
        volume={this.state.channelVolumes[index]} 
        onVolumeChange={this._handleChannelVolumeChange.bind(this, index)} 
        onMutePress={this._handleChannelMutePress.bind(this, index)} 
        onSoloPress={this._handleChannelSoloPress.bind(this, index)} 
        isPlayingSolo={this.state.channelSolos[index]} 
       /> 
      ); 
      }) 
      } 
      <VolumeSlider 
      title='Main' 
      volume={this.state.mainVolume} 
      onVolumeChange={this._handleMainVolumeChange.bind(this)} 
      onMutePress={this._handleMainMutePress.bind(this)} 
      hideSolo={true} 
      /> 
     </View> 
     <View style={{flexDirection: 'row', justifyContent: 'center'}}> 
      <TouchableHighlight style={styles.button} onPress={this._handleAPress.bind(this)}> 
      <Text numberOfLines={1}>{titleA}</Text> 
      </TouchableHighlight> 
      <TouchableHighlight style={styles.button} onPress={this._handleBPress.bind(this)}> 
      <Text numberOfLines={1}>{titleB}</Text> 
      </TouchableHighlight> 
      <TouchableHighlight 
      style={styles.button} 
      onPress={this._handleClearLoopPress.bind(this)} 
      > 
      <Text numberOfLines={1}>Clear</Text> 
      </TouchableHighlight> 
     </View> 
     <View style={styles.player}> 
      <TouchableHighlight onPress={this._handlePlayPress.bind(this)}> 
      <Icon 
       name={playIcon} 
       style={styles.playButton} 
      /> 
      </TouchableHighlight> 
      <View style={styles.center}> 
      <Text style={styles.timelineText}>{time}</Text> 
      </View> 
      <View style={styles.sliderContainer}> 
      <Slider 
       style={[styles.slider, styles.timelineSlider]} 
       onSlidingComplete={this._handleTimelineChange.bind(this)} 
       maximumValue={this.state.duration} 
       value={this.state.time} 
       step={0.01} 
      /> 
      </View> 
      <View style={styles.center}> 
      <Text style={styles.timelineText}>-{remaining}</Text> 
      </View> 
     </View> 
     </View> 
    ); 
    } 

,這是它的外觀像模擬器: Screenshot of the app when the player screen launched

我試圖改變播放按鈕的位置(我的意思是我把它放在應用程序的頂部),它的工作。但我不明白爲什麼它在左下角時不起作用?

謝謝你的回答。

回答

0

我發現了這個問題。問題是NavigatorIOS,它是PlayerScreen的父級,其渲染函數在其中給出。導航器有向後滑動手勢,它阻止播放按鈕上的第一次敲擊。當我通過僞造其interactivePopGestureEnabled pro來禁用導航器的向後滑動手勢時,播放按鈕正常工作。