Cómo agregar 3D Touch a tu aplicación IOS

Utilidad 3D Touch
La tecnología 3D Touch se introdujo por primera vez en los iPhone 6s y 6s +. Los dispositivos compatibles con 3D Touch están equipados con una pantalla sensible a la fuerza del grifo, que mide la presión en la pantalla. La tecnología 3D Touch permite a los usuarios presionar el ícono de una aplicación en la pantalla de inicio y obtener un acceso rápido a algunas de las funciones presentadas en la aplicación. Además, dentro de una aplicación, un usuario puede acceder a algunas funciones.

Desde iOS 9, Apple hizo disponibles las API 3D Touch:

  • API de acción rápida de la pantalla de inicio
  • UIKit peek and pop API
  • Web view peek and pop API
  • Propiedades de la fuerza de contacto

Para saber si un dispositivo es compatible con la tecnología 3D Touch, debe leer los valores de forceTouchCapability . Mientras la aplicación está funcionando, un usuario puede desactivar 3D Touch, por lo que este valor debe verificarse en el método de delegado traitCollectionDidChange.

  - (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection { 
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
NSLog (@ "3D Touch está disponible");
} else {
NSLog (@ "3D Touch no está disponible en este dispositivo");
}
}

Acciones rápidas 3D Touch
Hay dos tipos de acciones rápidas de la pantalla de inicio: dinámica y estática.

Las acciones estáticas se definen en el archivo Info.plist dentro de la matriz UIApplicationShortcutItems .

Las acciones dinámicas se deben agregar al objeto de aplicación UIApplication en la propiedad shortcutItems . Puedes usar dos métodos para la creación:

Método 1

  init (tipo: cadena, 
Título Localizado: Cadena,
subtítulo localizado: cadena?,
icono: UIApplicationShortcutIcon?,
userInfo: [AnyHashable: Any]? = nil)

Este método crea una acción rápida dinámica de la pantalla de inicio con un encabezado, un subtítulo opcional, un icono opcional y un diccionario de información del usuario opcional.

Método 2

  conveniencia de inicio (tipo: cadena, 
Título Localizado: Cadena

Crea una acción rápida dinámica de la pantalla de inicio con un encabezado pero sin icono.

Gestor de acciones rápidas
func aplicación (aplicación: UIApplication,

performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completedHandler: Bool -> Void) {

Deje que didHandle: Bool = / * maneje la acción rápida usando shortcutItem * /

la finalizaciónHandler (didHandle)

}

func application (aplicación: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

var performAdditionalHandling = true

si se deja shortcutItem = launchOptions? [UIApplicationLaunchOptionsShortcutItemKey]

¿como? UIApplicationShortcutItem {

/ * Manejar la acción rápida usando shortcutItem * /

performAdditionalHandling = false

}

volver realizarAdditionalHandling

}

UIKit peek and pop API
Esta API se utiliza para la vista previa del contenido (rápida) y una mayor transición a ella. Los nuevos métodos en el registro de UIViewController para ViewController y la cancelación de registro permiten notificaciones sobre si se va a utilizar con 3D Touch. También se han añadido nuevos protocolos para el soporte 3D Touch.

Registro de ViewController:
– (id) registerForPreviewingWithDelegate: (id) delegate sourceView: (UIView *) sourceView;

Ojeada:

– (UIViewController *) previsualizandoContexto: (id) previsualizandoContext viewControllerForLocation: (CGPoint) location {

// comprueba si todavía no estamos mostrando un controlador de vista previa

if ([self.presentedViewController isKindOfClass: [clase PreviewViewController]]) {

devuelve nil

}

// presión superficial: devuelve el controlador de vista previa aquí (peek)

UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ “Main” bundle: nil];

UIViewController * previewController = [storyboard storyiateViewControllerWithIdentifier: @ “PreviewView”];

volver previewController;

}

Cometer:

– (void) vista previaContext: (id) vista previaContext commitViewController: (UIViewController *) viewControllerToCommit {

// pulsación profunda: mostrar el controlador de vista de confirmación (pop)

UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ “Main” bundle: nil];

UIViewController * commitController = [storyboard storyiateViewControllerWithIdentifier: @ “CommitView”];

[auto showViewController: commitController sender: self];

// alternativamente, use el controlador de vista que se proporciona aquí (viewControllerToCommit)

}

En la vista previa, también puede agregar UIPreviewAction y UIPreviewActionGroup

  UIPreviewAction * action1 = [UIPreviewAction actionWithTitle: @ "Action 1" 
estilo: UIPreviewActionStyleDefault handler: ^ (acción UIPreviewAction * _Nonnull,
UIViewController * _Nonnull previewViewController) {
NSLog (@ "Acción 1 activada");
}];

  // agregarlos a un arrary 
NSArray * actions = @ [action1, action2, action3];

  // agregar todas las acciones a un grupo 
UIPreviewActionGroup * group1 = [UIPreviewActionGroup actionGroupWithTitle: @ "Action Group"
style: UIPreviewActionStyleDefault actions: actions];
NSArray * group = @ [group1];

El verdadero potencial del toque 3D
A medida que los desarrolladores están conociendo los beneficios de la tecnología 3D, queda claro que se convertirá en un elemento básico.

Dejar respuesta

Please enter your comment!
Please enter your name here