使用 jetpack compose,对于点击事件如何执行触觉反馈。我是jetpack compose的新手。这就是我尝试过的 -
val hapticFeedback = LocalHapticFeedback
@Composable
fun Tab() {
Row() {
Icon(imageVector = icon, contentDescription = text)
if (selected) {
// i tried both the following ways, none are working.
hapticFeedback.current.performHapticFeedback(
HapticFeedbackType(10)
)
hapticFeedback.current.performHapticFeedback(HapticFeedbackType.TextHandleMove)
....
Spacer(Modifier.width(12.dp))
Text(text.uppercase(Locale.getDefault()))
}
}
}
Run Code Online (Sandbox Code Playgroud)
当文本被选中时,我可以看到文本,但没有得到微妙的振动反馈。
我的应用程序中有一个菜单,当菜单打开时(通过onTagGesture操作)我会触发触觉反馈。
然而, 有时当我点击菜单打开触发器时,菜单实际上不会打开,但我仍然收到触觉反馈。我只在菜单实际打开时才需要触觉。
这是代码简化的代码块:
Menu {
Button("Menu button", action: someAction}}
} label: {
Text("Open menu") //in reality, this a more complicated view tapping on which should open the (context) menu
}
.onTagGesture {
let generator = UIImpactFeedbackGenerator(style: .rigid)
generator.impactOccurred()
}
Run Code Online (Sandbox Code Playgroud)
所以它非常简单 - 点击触发器Open menu,点击被注册,触觉被回放,菜单打开。
但如前所述,无论出于何种原因,有时我按下该Open menu元素,触觉会回放,但实际菜单不会打开。
无论出于何种原因,我想知道一旦菜单实际打开(或者更好的是,将实际打开),是否有任何方法可以执行操作(例如前面提到的触觉反馈)?我试图尽可能地寻找,但一无所获。
这也很重要,因为菜单也需要长按才能打开,这是打开菜单的 iOS 标准操作。即使我可以为长按添加另一个单独的处理程序(为两种情况提供触觉),但这似乎根本不是一个正确的方法。
结合有时菜单无法打开的事实,我似乎确实需要一些其他解决方案。任何人都可以分享任何想法吗?我是否缺少某种 onXXXXX 处理程序,该处理程序会在菜单打开时触发?
谢谢!
PS:为了提供更多细节,我正在尝试对 Apple 开发文档中描述的菜单实现这种方法: https: //developer.apple.com/documentation/swiftui/menu
作为该过程的一部分,我尝试将 onAppear 处理程序附加到整个菜单以及菜单内的单个元素。似乎两者都不起作用。
Menu {
Button("Open in Preview", action: openInPreview) …Run Code Online (Sandbox Code Playgroud) 我想知道我们如何检查UIFeebackGenerator当前设备上是否有新的iOS 10 API .还有一些我们需要检查的事情:
前两个检查可以使用#available(iOS 10, *)语句和(hacky)设备检测来实现,但后者似乎不可检查.
有人知道这方面的解决方案吗?或许我们需要为此提交Apple Radar.谢谢!
我写了一个反应原生的应用程序,我注意到虽然按钮在点击时看起来像本机按钮 - 它们不像一个人一样(至少不像android按钮行为).
单击Android应用程序按钮 - 发出声音并向用户提供触觉反馈.在声音中,我看到有github讨论和公开问题,但我无法找到任何关于触觉反馈的内容.
如何使我的视图(任何可触摸的视图...)在点击上进行触觉反馈?这在应用程序中非常重要.
我想要这样的东西(在android中)
View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
Run Code Online (Sandbox Code Playgroud)
这不需要应用程序拥有权限Vibrate.
使用Vibrateapi 自行管理触觉反馈将导致全局禁用此选项的用户体验不良行为
谢谢
我已经进口
import 'package:flutter/services.dart';
Run Code Online (Sandbox Code Playgroud)
然后叫
HapticFeedback.lightImpact();
Run Code Online (Sandbox Code Playgroud)
没发生什么事。我需要做什么才能让它工作?我正在运行 Android 9.0 的 Galaxy S8 上使用最新的 Flutter 1.6.6 版进行测试
将麦克风音频输入添加到AVCaptureSession似乎禁用了UIImpactFeedbackGenerator.
let audioDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
if self.session.canAddInput(audioDeviceInput) {
self.session.addInput(audioDeviceInput)
}
Run Code Online (Sandbox Code Playgroud)
移除音频设备后,将恢复反馈.
这是正常的行为吗?有没有解决的办法?
我注意到视频模式下的iOS相机应用程序和长按缩略图似乎仍然使反馈工作.所以有必要解决这个问题吗?
我想在我的应用程序中使用一些触觉。我正在使用,UISelectionFeedbackGenerator但它不起作用。我正在使用 iOS 10 在真正的 iPhone 7 上进行测试。这两行应该可以发挥作用 - 但没有任何反应:
let generator = UISelectionFeedbackGenerator()
generator.selectionChanged()
Run Code Online (Sandbox Code Playgroud) 我看到iOS 11中的触觉反馈引擎出现间歇性崩溃.不幸的是,我没有可重复的步骤,因为它似乎是随机发生的.
以下是异常和堆栈跟踪:
在自动停用<UIImpactFeedbackGenerator时引发异常:0x1c850a710:prepared = 0>对于样式2:强制停用<UIImpactFeedbackGenerator:0x1c850a710:prepared = 0>,样式为TurnOn且未激活(activationCount = -1)配置:<_UIImpactFeedbackGeneratorConfiguration:0x1c80bc920: isEnabled = 1,activationStyle = 2,requiredSupportLevel = 2> activationCount:-1,styleActivationCount:-1 engines:{(<_ UIFeedbackHapticOnlyEngine:0x1c80db040:state = 4,numberOfClients = 1,prewarmCount = 0,_isSuspended = 0>)}
# Platform: ios # Application: MyApp # Version: 3.1.0.4 # Bundle Identifier: com.company.myApp # Issue #: 8845 # Issue ID: 59ff154761b02d480dd20c28 # Session ID: 2ec9b043edaa4fcaad12fa480d690e8a_0c4f8c61fbbd11e7924356847afe9799_0_v2 # Date: 2018-01-17T19:31:00Z # OS Version: 11.2.2 (15C202) # Device: iPhone 8 # RAM Free: 20.8% # Disk Free: 82.9% #0. Crashed: com.twitter.crashlytics.ios.exception 0 MyApp 0x100d02fb8 CLSProcessRecordAllThreads …
有没有办法禁用移动过程中交换单元时发生的触觉反馈?
假设用户没有静音他们的手表声音.苹果手表应用程序是否有可能在没有伴音的情况下触发触觉反馈(即振动).
这与收到手表自动处理的通知不同.在这种情况下,我正在使用手表应用程序调用触觉反馈.
像这样:[[WKInterfaceDevice currentDevice] playHaptic:WKHapticTypeClick];
haptic-feedback ×10
ios ×5
ios10 ×2
swift ×2
apple-watch ×1
avfoundation ×1
dart ×1
flutter ×1
ios11 ×1
iphone ×1
menu ×1
react-native ×1
swiftui ×1
watchkit ×1
xcode ×1