2015-09-29 9 views
9

Telefon, przypomnienia i mapy korzystają z innego interfejsu Peek 3D-Peek, pozwalającego wybrać akcję za jednym razem. Na przykład naciśnij przycisk force na przypomnieniu i wybierz "Przypomnij mi o jednym dniu" za jednym zamachem, nie puszczając palca. Różni się również wizualnie od standardowych podglądów 3D Touch za pomocą interfejsu API UIViewControllerPreviewing, ponieważ wyświetla niestandardową ikonę obok wyrównanego do lewej strony tekstu.Jak zaimplementować 3D-Touch Peek-and-select?

enter image description here

nie mogłem znaleźć sposób, aby to zrobić przy użyciu oficjalnego API. Czy coś przeoczyłem, czy też jest to prywatne API?

+0

Prosimy o zaznaczenie mojej odpowiedzi jako poprawnej, aby zapewnić, że ludzie szybko znajdą odpowiednie źródło. Dzięki! –

Odpowiedz

3

Poprosiłem moje pytanie na Apple Developer Forums jak dobrze i otrzymał tę odpowiedź od Apple:

Obecnie nie ma API publicznych robić te rzeczy. Prosimy o zgłaszanie zgłoszeń o błędach , jeśli jest to coś, co chcesz zrobić w swojej aplikacji i zawierają one szczegółowe informacje o tym, czego szukasz.

Obecnie nie jest to możliwe przy użyciu oficjalnego zestawu SDK. Złożyłem to enhancement request radar i zachęcam cię, byś go oszukał, jeśli tego potrzebujesz!

0

Są to UIPreviewActionItem.

Po nadpisaniu previewingContext:viewControllerForLocation: można również przesłonić - (NSArray<id<UIPreviewActionItem>> *)previewActionItems i to pozwoli określić szybkie czynności.

Oto fragment, który będzie ci pomóc: (related tutorial)

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems 
{ 
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Action 1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Action 1 triggered"); 
    }]; 

    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"Destructive Action" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Destructive Action triggered"); 
    }]; 

    UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"Selected Action" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Selected Action triggered"); 
    }]; 

    return @[action1, action2, action3]; 
} 

Jabłko Docs:

Ta właściwość jest do użytku z kontrolerem podgląd (PEEK) widok, który ty obecne w implementacji previewingContext: viewControllerForLocation: delegate method ..

Zastosuj tę metodę, aby zapewnić szybkie działania dla takiego podglądu. Gdy użytkownik przesuwa w górę w podglądzie, system przedstawia te szybkie elementy w arkuszu poniżej podglądu.

Domyślna implementacja tej metody zwraca pustą tablicę.

+1

Przeczytaj uważnie to pytanie. Nie odwołuję się do standardowych podglądów Peek-and-Pop, ale do specjalnych w wymienionych aplikacjach.Standardowe podglądy nie pozwalają na wybranie akcji bez zwolnienia palca. –

+0

Jak wykorzystasz to do komponowania poczty? W moim kontrolerze podglądu mam standardową metodę displayComposerSheet, ale kiedy mówię o tym działaniu, kompozytor nigdy się nie wyświetla, ponieważ metoda nakazuje jej uruchomienie w tym podglądzie, a podgląd już nie istnieje. – user717452

2

Dla przyszłych czytelników, odpowiedź Apple na to pytanie brzmi:

Obecnie nie ma API publicznych robić te rzeczy. Prosimy o zgłaszanie raportów o błędach, jeśli jest to coś, co chcesz zrobić w swojej aplikacji i zawierają szczegółowe informacje o tym, co chcesz zrobić.

Źródło: Apple Developer Forum