So fügen Sie Ihrer iOS-App 3D-Touch hinzu
[ad_1]
3D-Touch-Dienstprogramm
Die 3D-Touch-Technologie wurde erstmals auf dem iPhone 6s und 6s+ eingeführt. Geräte, die 3D Touch unterstützen, sind mit einem berührungsempfindlichen Display ausgestattet, das den Druck auf dem Bildschirm misst. Die 3D-Touch-Technologie ermöglicht es Benutzern, ein App-Symbol auf dem Startbildschirm zu drücken und einen schnellen Zugriff auf einige Funktionen der App zu erhalten. Außerdem kann ein Benutzer innerhalb einer App auf einige Funktionen zugreifen.
Ab iOS 9 hat Apple 3D-Touch-APIs verfügbar gemacht:
-
Startbildschirm-Schnellaktions-API
-
UIKit-Peek-and-Pop-API
-
Web-View-Peek-and-Pop-API
-
UITouch-Krafteigenschaften
Um herauszufinden, ob ein Gerät die 3D-Touch-Technologie unterstützt, müssen Sie die forceTouchCapability
Werte. Während die App funktioniert, kann ein Benutzer 3D Touch deaktivieren, daher muss dieser Wert in der Delegate-Methode traitCollectionDidChange überprüft werden.
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
NSLog(@"3D Touch is available");
} else {
NSLog(@"3D Touch is not available on this device");
}
}
3D Touch-Schnellaktionen
Es gibt zwei Arten von Startbildschirm-Schnellaktionen: dynamisch und statisch.
Statische Aktionen sind in der Info.plist
Datei innerhalb der UIApplicationShortcutItems
Array.
Dynamische Aktionen müssen dem hinzugefügt werden UIA-Anwendung Anwendungsobjekt im ShortcutItems Eigentum. Sie können zwei Methoden für die Erstellung verwenden:
Methode 1
init(type: String,
localizedTitle: String,
localizedSubtitle: String?,
icon: UIApplicationShortcutIcon?,
userInfo: [AnyHashable: Any]? = nil)
Diese Methode erstellt a Dynamische Schnellaktion auf dem Startbildschirm mit Header, optionalem Subheader, optionalem Symbol und optional Benutzerinformation Wörterbuch.
Methode 2
convenience init(type: String,
localizedTitle: String)
Erzeugt ein Dynamische Schnellaktion auf dem Startbildschirm mit einer Kopfzeile, aber ohne Symbol.
Handler für schnelle Aktionen
func-Anwendung (Anwendung: UIA-Anwendung,
performActionForShortcutItem ShortcutItem: UIApplicationShortcutItem, CompletionHandler: Bool -> Void) {
let didHandle: Bool = /* Behandeln Sie die Schnellaktion mit ShortcutItem */
CompletionHandler(didHandle)
}
func application(Anwendung: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var performAdditionalHandling = true
if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey]
wie? UIApplicationShortcutItem {
/* Behandeln Sie die Schnellaktion mit ShortcutItem */
performAdditionalHandling = false
}
zurück performAdditionalHandling
}
UIKit-Peek-and-Pop-API
Diese API wird für die Inhaltsvorschau (schnell) und den weiteren Übergang verwendet. Neue Methoden in UIViewController zum ViewController Registrierung und Registrierungsstornierung ermöglichen Benachrichtigungen, ob es von 3D Touch verwendet wird. Außerdem wurden neue Protokolle für die 3D-Touch-Unterstützung hinzugefügt.
ViewController-Registrierung:
-(id)registerForPreviewingWithDelegate:(id)delegieren sourceView:(UIView *)sourceView;
Spähen:
– (UIViewController *)previewingContext: (id)previewingContext viewControllerForLocation:(CGPoint)location {
// Überprüfen Sie, ob wir nicht bereits einen Vorschau-Controller anzeigen
wenn ([self.presentedViewController isKindOfClass:[PreviewViewController class]]) {
Rückgabe null;
}
// flaches Drücken: den Vorschau-Controller hierher zurückgeben (Peek)
UIStoryboard *Storyboard = [UIStoryboard storyboardWithName:@“Main“ bundle:nil];
UIViewController *previewController = [storyboard instantiateViewControllerWithIdentifier:@“PreviewView“];
return previewController;
}
Verpflichten:
– (void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
// Deep Press: Rufen Sie den Commit-View-Controller auf (Pop)
UIStoryboard *Storyboard = [UIStoryboard storyboardWithName:@“Main“ bundle:nil];
UIViewController *commitController = [storyboard instantiateViewControllerWithIdentifier:@“CommitView“];
[self showViewController:commitController sender:self];
// alternativ den hier bereitgestellten View-Controller verwenden (viewControllerToCommit)
}
In der Vorschau können Sie auch hinzufügen UIPreviewAction
und UIPreviewActionGroup
UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Action 1"
style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action,
UIViewController * _Nonnull previewViewController) {
NSLog(@"Action 1 triggered");
}];
// add them to an arrary
NSArray *actions = @[action1, action2, action3];
// add all actions to a group
UIPreviewActionGroup *group1 = [UIPreviewActionGroup actionGroupWithTitle:@"Action Group"
style:UIPreviewActionStyleDefault actions:actions];
NSArray *group = @[group1];
Das wahre Potenzial von 3D-Touch
Während die Entwickler die Vorteile der 3D-Technologie kennenlernen, wird klar, dass sie zu einem festen Bestandteil werden wird.