#swift #swiftui
Вопрос:
Я испытал странное тактильное поведение на iPhone6s / iOS 14.3.
UINotificationFeedbackGenerator()
amp;
UIImpactFeedbackGenerator()
не производите никаких вибраций
пока
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
сделай это.
Я подтвердил с помощью того же простого кода на iPhone XR, где работают оба.
import SwiftUI
import AVFoundation
struct ContentView: View {
func simpleSuccess() {
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.error)
}
func otherVibration() {
print("#")
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
var body: some View {
VStack {
Text("UINotificationFeedbackGenerator")
.onTapGesture(perform: simpleSuccess)
.padding(.bottom, 60)
Text("AudioServicesPlayAlertSound")
.onTapGesture(perform: otherVibration)
}
}
}
Комментарии:
1. Какова ваша прегунта? Это «У кого-нибудь есть такая же проблема»? Это «Как я могу сообщить об ошибке в Apple, Inc»? Или это «Есть ли обходной путь»?
2. Ты прав @ElTomato. Я завершил свой титул в соответствии с вашим предложением.
3. Нажмите на «поддерживаемые модели» по следующему адресу. support.apple.com/en-hk/guide/iphone/iph07c867f28/ios
4. Вам бы помогло это мое сообщение в блоге: biteinteractive.com/finishing-touches-haptics
Ответ №1:
По словам Apple, не все модели поддерживают тактильную обратную связь. iPhone 6S этого не поддерживает.
Ответ №2:
Я нашел хороший способ узнать, поддерживает ли модель тактильные характеристики или нет
import CoreHaptics
print(CHHapticEngine.capabilitiesForHardware().supportsHaptics ? "Yes" : "No")
Комментарии:
1. Вы действительно запустили свой код? Если я запускаю его с помощью симулятора под iOS 14.4, я получаю «Нет». Интересно, дело только в том, чтобы запустить его на реальном устройстве?
2. Да, я запустил его на реальном устройстве. Он говорит «Нет», как и ожидалось.