6
 <ScrollView
      ref={scrollRef}
      horizontal
      scrollEnabled={isScroll}
      contentContainerStyle={{height: HEIGHT, overflow: 'hidden'}}
      style={{
        width: metrics.screenWidth - widthOffset,
      }}
      onScroll={_onScroll}>
      <WebView
        ref={webviewRef}
        automaticallyAdjustContentInsets={false}
        scrollEnabled={false}
        showsHorizontalScrollIndicator={false}
        showsVerticalScrollIndicator={false}
        onLoadEnd={_loadEnd}
        bounces={false}
        source={{
          html: getHtml(final, scale),
        }}
        style={{
          height: HEIGHT,
          width: WIDTH,
          backgroundColor: 'transparent',
        }}
        onMessage={_onMessage}
        javaScriptEnabled={true}
        textZoom={90}
      />
    </ScrollView>

还有

source.replace(
    '<img',
    '<img ontouchend="window.ReactNativeWebView.postMessage(`imgsrc__`+this.src)"',
)

所以问题是当我在 html img 上滚动这个滚动视图时,它会得到触摸并且手机会振动。有没有办法从源端(html)或 react-native-webview 端禁用 webview 触觉反馈?

我认为这是因为在滚动 img 标签时将交互视为 longtouch,因此它在 webview 中启用 longtouch。

4

2 回答 2

3

我实际上找到了解决方案

我确实扩展了 react-native-webview 并添加了一个自定义道具 setHapticFeedbackEnabled 参考

webview.setHapticFeedbackEnabled(false);

// this is the solution in android;

我已经尝试了许多其他方法,比如在 html 脚本中window.contextmenu,长按等,但没有一个奏效。

于 2020-03-05T08:46:59.103 回答
2

这将禁用对 Webview 的任何触摸并确保将 pointerEvents 应用于 View,因为 Webview 不支持 pointerEvents。

<ScrollView>
      <View pointerEvents="none">
        <WebView
          style={{ height: HEIGHT, width: WIDTH }}
          source={{ getHtml(final, scale) }}
        />
      </View>
    </ScrollView>
于 2020-03-05T06:37:39.483 回答