Utilizzando la funzionalità 3D Touch Peek e Pop, qual è il modo più efficace di imitare le funzionalità illustrate di seguito (per far scorrere il contenuto "sbirciato" lato a lato per eseguire un'azione)? Lo screenshot qui sotto proviene dall'app di posta nativa iOS.3D Touch Peek Scorri come Mail
risposta
Aggiornamento
È possibile replicare questo effetto su iOS 10. C'è un nuovo set di API chiamato UIPreviewInteraction
e UIPreviewInteractionDelegate
che abilitano la presentazione personalizzata per le interazioni peek/pop. Consiglio vivamente di guardare A Peek at 3D Touch da WWDC di quest'anno.
risposta originale
Guardando il iOS Runtime Headers, c'è una classe chiamata UIPreviewPresentationController
. Questo è il controller responsabile per sbirciate. Al suo interno, ci sono riferimenti a oggetti denominati leadingPreviewAction
e trailingPreviewAction
. Questi hanno proprietà corrispondenti che si occupano di vincoli e centri di bordo. A giudicare dall'uso dei termini che precedono e trailing (come in Layout automatico), questi possono corrispondere a elementi di azione sinistra/destra.
Questa è la speculazione, ma penso che queste classi private correlate (_UIPreviewQuickActionView
) controllino il comportamento che stai cercando. Quelle non sono disponibili in questo momento.
Allo stesso modo, la documentazione per UIPreviewAction
dice:
Un'azione anteprima, o sbirciare azione rapida, viene visualizzato sotto una sbirciatina quando un utente fa scorrere il peek verso l'alto. Un'azione rapida di sbirciatina seleziona in genere un link diretto alla tua app e ha un titolo, uno stile e un gestore.
E per rispondere alla tua domanda "qual è il modo più efficace di imitare la capacità", finiresti per ricreare la funzionalità come ha detto @DougSmith. Vorrei iniziare qui (https://github.com/marmelroy/PeekPop) per idee su come farlo. –
Attraverso la risposta, grazie! Le informazioni sulle intestazioni di iOS Runtime sono particolarmente interessanti, non le ho mai incontrate prima. Questo sicuramente aiuta tutto ha più senso @ Chris. – kbpontius
Per utilizzare Peek azioni rapidi, il tuo detailledViewControler (o quello che denominato esso) dovrebbe ignorare previewActionItems
così:
lazy var previewActions: [UIPreviewActionItem] = {
func previewActionForTitle(title: String, style: UIPreviewActionStyle = .Default) -> UIPreviewAction {
return UIPreviewAction(title: title, style: style) { previewAction, viewController in
guard let detailViewController = viewController as? DetailViewController,
item = detailViewController.detailItemTitle else { return }
print("\(previewAction.title) triggered from `DetailViewController` for item: \(item)")
}
}
let action1 = previewActionForTitle("Default Action")
let action2 = previewActionForTitle("Destructive Action", style: .Destructive)
let subAction1 = previewActionForTitle("Sub Action 1")
let subAction2 = previewActionForTitle("Sub Action 2")
let groupedActions = UIPreviewActionGroup(title: "Sub Actions…", style: .Default, actions: [subAction1, subAction2])
return [action1, action2, groupedActions]
}()
override func previewActionItems() -> [UIPreviewActionItem] {
return previewActions
}
Potete trovare l'intero codice qui: https://developer.apple.com/library/ios/samplecode/ViewControllerPreviews/ViewControllerPreviewsUsingtheUIViewControllerpreviewingAPIs.zip
Questo mi fa sicuramente orientare nella giusta direzione, ma il codice fornito nel collegamento non sembra essere in grado di scorrere da lato a lato una volta che 3D Touch viene utilizzato su una di quelle 3 file come l'app di posta elettronica può. Sto facendo qualcosa di sbagliato? – kbpontius
Credo che non ci sia modo di ottenere quello che vuoi con l'API pubblica. Semplicemente perché le API pubbliche sono solo circa 2 o 3 metodi e non offre altre opzioni oltre a "UIPreviewActionItem' che hanno solo 3" stili ". Credo che Apple stia tenendo questo per sé ... – AncAinu
Questo è quello di cui avevo paura. Sarebbe bello vedere più documentazione su questo. Se riesci a trovare informazioni concrete su di esso sarei felice di premiarti la generosità.Grazie per i tuoi pensieri finora. – kbpontius
Vale la pena ricordare che, a meno che Facebook non sia autorizzato a utilizzare API private, la loro app ti consente di scorrere gli album per vedere più immagini, quindi ci sono app in App Store con quella funzionalità. –
@DougSmith È possibile reimplementare l'intera funzionalità UIKit 3D Touch, incluso questo. Facebook lo ha implementato utilizzando l'ascolto manuale del riconoscimento del gesto di forza. –