Certains iPhones sont équipés d'un appareil appelé Taptic Engine. Il s'agit d'un appareil qui crée la sensation d'appuyer sur le bouton d'accueil au lieu d'être un bouton physique. Une sensation de clic se produit lorsque vous appuyez et maintenez autre chose que le bouton d'accueil ou lorsque le paiement est terminé.
J'ai essayé de faire fonctionner ce Taptic Engine en utilisant une application appelée Pyto.
iPhone SE (2020)(iOS13.4.1) Pyto(11.9)
Je comprends que Taptic Engine est un appareil qui génère une sensation de clic, et cette sensation de clic s'appelle Haptic Feedback.
Il existe trois types de commentaires haptiques sur l'iPhone. Ici J'ai fait référence au site de [1]. Ici Il est également décrit en détail sur le site [2].
type | une fonction |
---|---|
UIImpactFeedbackGenerator | Réagissez une fois. 3 niveaux de force peuvent être sélectionnés |
UISelectionFeedbackGenerator | Pour la sélection UI. La réaction la plus faible |
UINotificationFeedbackGenerator | Pour notification de réussite ou d'échec. Il existe trois types |
Vous pouvez utiliser ʻUIKit dans Pyto. C'est une fonction qui vous permet de toucher Objective-C, comme ʻobjc_util
dans Pythonista. En fait, c'est une bibliothèque appelée rubicon-objc
, et il semble qu'elle soit utilisée pour faire fonctionner Objective-C. Code source Pyto UIKit
Il semble que vous puissiez minimiser le délai en mettant prepare ()
avant d'appeler, mais c'est facultatif. Le sentiment que j'ai essayé ne faisait aucune différence avec ou sans lui. préparer la documentation
UIImpactFeedbackGenerator
Vous pouvez régler la force en 3 étapes. 0 est le plus faible.
import UIKit
generator = UIKit.UIImpactFeedbackGenerator.alloc().init()
generator.prepare()
power = 0 # 0~3 étapes de 2
generator.initWithStyle(power) #Définir la force
generator.impactOccurred() #Activer
UISelectionFeedbackGenerator La force ne peut pas être ajustée.
import UIKit
generator = UIKit.UISelectionFeedbackGenerator.alloc().init()
generator.prepare()
generator.selectionChanged() #Activer
UINotificationFeedbackGenerator Vous pouvez choisir parmi 3 types de réactions. Succès (tonne ** tonne ) = 0, avertissement ( tonne tonne ) = 1, erreur ( tocoton **) = 2.
import UIKit
generator = UIKit.UINotificationFeedbackGenerator.alloc().init()
generator.prepare()
mode = 0 # 0~3 types de 2.
generator.notificationOccurred(mode) #Activer
Ceci est un code qui teste toutes les forces des trois types ci-dessus à la fois.
import UIKit
import time
generator = UIKit.UIImpactFeedbackGenerator.alloc().init()
generator2 = UIKit.UISelectionFeedbackGenerator.alloc().init()
generator3 = UIKit.UINotificationFeedbackGenerator.alloc().init()
print("impact start")
generator.prepare()
for i in range(3):
print(f"-{i}")
for j in range(3):
generator.initWithStyle(i)
generator.impactOccurred()
time.sleep(0.3)
print("finished")
time.sleep(1)
print("selection start")
generator2.prepare()
for i in range(10):
generator2.selectionChanged()
time.sleep(0.1)
print("finished")
time.sleep(1)
print("notification start")
generator3.prepare()
for i in range(3):
print(f"-{i}")
generator3.notificationOccurred(i)
time.sleep(1)
print("finished")
Il m'a fallu un certain temps pour réaliser que je devais écrire .alloc (). Init ()
.
[1] https://qiita.com/WorldDownTown/items/2b5a72e41a95763727bb (Comment utiliser UIFeedbackGenerator et une bibliothèque pratique) [2] https://note.com/tdksk/n/nb4498e59dcad (micro-interaction efficace avec Haptic Feedback dans l'application iPhone) [3] https://qiita.com/griffin_stewie/items/298f57ca3f1714ebe45c (j'ai eu l'iPhone 7, j'ai donc immédiatement essayé l'API Taptic Engine) [4] https://developer.apple.com/documentation/uikit/uifeedbackgenerator?language=objc#2555399 (UIFeedbackGenerator) [5] https://rubicon-objc.readthedocs.io/en/latest/tutorial/tutorial-2.html (Rubicon Tutorial 2)
Recommended Posts