So fügen Sie Ihrer iOS-App 3D-Touch hinzu

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.



Quelle von Moses Kim

Kommentar verfassen