有啥方法可以在 react-native-webview 中禁用 hapticFeedback

Posted

技术标签:

【中文标题】有啥方法可以在 react-native-webview 中禁用 hapticFeedback【英文标题】:Is there any way to disable hapticFeedback in react-native-webview有什么方法可以在 react-native-webview 中禁用 hapticFeedback 【发布时间】:2020-05-22 03:48:33 【问题描述】:
 <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。

【问题讨论】:

如果您对长按事件的假设是正确的,您可以(至少对于 android)尝试将 android:hapticFeedbackEnabled="false" 添加到您的 Manifest.xml 中,请参见此处:***.com/a/52588549/2422125 谢谢,但放入 Manifest 并不能解决问题。我不得不将 prop 本机传递给 webview 【参考方案1】:

其实我已经找到了解决办法

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

webview.setHapticFeedbackEnabled(false);

// this is the solution in android;

我尝试了许多其他方法,例如在window.contextmenu 的 html 脚本中,长按等,但都没有奏效。

【讨论】:

【参考方案2】:

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

<ScrollView>
      <View pointerEvents="none">
        <WebView
          style= height: HEIGHT, width: WIDTH 
          source= getHtml(final, scale) 
        />
      </View>
    </ScrollView>

【讨论】:

如果我禁用了pointerEvents,那么在webview中什么都不能被触及。很抱歉没有被接受

以上是关于有啥方法可以在 react-native-webview 中禁用 hapticFeedback的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以强制异步 NSURLConnection 在后台调用 connectionDidFinishLoading 吗?

有啥方法可以在 Javascript 中删除这些引号?

有啥方法可以在取消 UIPopoverController 的同时触摸取消按钮?

有啥方法可以在 Angular2 中测试 EventEmitter?

有啥方法可以在 Spock 中进行模拟参数捕获

有啥方法可以防止以角度破坏组件?