有啥方法可以在 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 吗?
有啥方法可以在取消 UIPopoverController 的同时触摸取消按钮?