3D Touch-hulpprogramma
De 3D Touch-technologie werd voor het eerst geïntroduceerd op de iPhone 6s en 6s+. Apparaten die 3D Touch ondersteunen, zijn uitgerust met een tikkrachtgevoelig display dat de druk op het scherm meet. Met de 3D Touch-technologie kunnen gebruikers op een app-pictogram op het startscherm drukken en snel toegang krijgen tot bepaalde functies die in de app worden gepresenteerd. Binnen een app kan een gebruiker ook toegang krijgen tot sommige functies.
Vanaf iOS 9 heeft Apple 3D Touch API’s beschikbaar gesteld:
- Startscherm Snelle actie-API
- UIKit peek en pop API
- Webweergave peek en pop-API
- UITouch force-eigenschappen
Om erachter te komen of een apparaat de 3D Touch-technologie ondersteunt, moet u de
forceTouchCapability
waarden. Terwijl de app werkt, kan een gebruiker 3D Touch uitschakelen, dus deze waarde moet worden gecontroleerd in de traitCollectionDidChange delegate-methode.
- (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 snelle acties
Er zijn twee soorten snelle acties op het startscherm: dynamisch en statisch.
Statische acties worden gedefinieerd in de Info.plist
bestand binnen de UIApplicationShortcutItems
reeks.
Dynamische acties moeten worden toegevoegd aan de UIA-toepassing toepassingsobject in de snelkoppelingItems eigendom. U kunt twee methoden gebruiken voor het maken:
Methode 1
init(type: String,
localizedTitle: String,
localizedSubtitle: String?,
icon: UIApplicationShortcutIcon?,
userInfo: [AnyHashable: Any]? = nil)
Deze methode creëert een Dynamische snelle actie op het startscherm met een koptekst, optionele subkop, optioneel pictogram en optioneel gebruikers informatie woordenboek.
Methode 2
convenience init(type: String,
localizedTitle: String)
Creëert een Dynamische snelle actie op het startscherm met een kop maar zonder pictogram.
Snelle acties-handler
func-applicatie (applicatie: UIA-applicatie,
performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: Bool -> Void)
laat didHandle: Bool = /* de snelle actie afhandelen met shortcutItem */
voltooiingHandler(didHandle)
func-toepassing (toepassing: UIA-toepassing, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
var performAdditionalHandling = true
als laat shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey]
als? UI ApplicationShortcutItem
/* handel de snelle actie af met shortcutItem */
performAdditionalHandling = false
retour uitvoerenAdditionalHandling
UIKit peek en pop API
Deze API wordt gebruikt voor content preview (snel) en verdere overgang ernaar. Nieuwe methoden in UIViewController voor BekijkController registratie en registratieannulering maken het mogelijk om te melden of het door 3D Touch zal worden gebruikt. Daarnaast zijn er nieuwe protocollen toegevoegd voor 3D Touch-ondersteuning.
ViewController registratie:
-(id)registerForPreviewingWithDelegate:(id)delegeren sourceView:(UIView *)sourceView;
Kijkje:
– (UIViewController *)previewingContext: (id)previewingContext viewControllerForLocation:(CGPoint)location
// controleer of we niet al een preview-controller weergeven
indien ([self.presentedViewController isKindOfClass:[PreviewViewController class]])
retour nihil;
// ondiepe druk: retourneer de preview-controller hier (peek)
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@”Main” bundle:nil];
UIViewController *previewController = [storyboard instantiateViewControllerWithIdentifier:@”PreviewView”];
retourneer voorbeeldController;
Verbinden:
– (void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
// diep indrukken: breng de commit view-controller naar voren (pop)
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@”Main” bundle:nil];
UIViewController *commitController = [storyboard instantiateViewControllerWithIdentifier:@”CommitView”];
[self showViewController:commitController sender:self];
// gebruik als alternatief de view-controller die hier wordt aangeboden (viewControllerToCommit)
In voorbeeld kunt u ook toevoegen UIPreviewAction
en 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];
Het ware potentieel van 3D Touch
Naarmate ontwikkelaars de voordelen van de 3D-technologie leren kennen, wordt het duidelijk dat het een nietje zal worden.