Как добавить быстрые действия 3D Touch внутри приложения? лайк в контактах

Есть ли API для отображения меню быстрых действий при принудительном касании внутри приложения? Я вижу только API для отображения меню быстрых действий, когда вы пролистываете вверх. Но я хочу сделать что-то вроде примера со страницы Apple 3D Touch.

Вот чего я хочу добиться меню быстрых действий 3D Touch на контактах на 6s


person nimish    schedule 11.02.2016    source источник
comment
Привет нимиш, как ты это сделал в конце? Не могли бы вы предоставить код? Спасибо!   -  person jmoukel    schedule 08.07.2016


Ответы (2)


Может быть другое решение, но я думаю, что одно из них заключается в том, что вы можете показать этот пользовательский вид при обнаружении 3D-касания. Вы можете сделать это из

  • UIViewControllerPreviewingDelegate метод previewingContext:viewControllerForLocation:, или вы можете использовать force и maximumPossibleForce свойства UITouch для обнаружения давления на экране и отображения этого пользовательского вида после определенного уровня давления.
person Mahesh K    schedule 13.02.2016

Вы можете попробовать мою собственную библиотеку ActionsList, которая выглядит так же, как Меню быстрых действий Apple.

Он пока не поддерживает 3D Touch, но может помочь вам представить тот же список действий, что и на снимке экрана провайдера.

Сначала вы должны создать список.

Если вы хотите представить его из UIButton, UIBarButtonItem из UITabBarItem, есть встроенные методы для создания списка:

// element is UIButton, UIBarButtonItem or UITabBarItem
let list = element.createActionsList()

В противном случае вы должны использовать структуру ActionsListModel:

let list = ActionsListModel(senderView: viewThatInitiatedListPresenting,
                            sourceView: viewToPresentListFrom,
                            delegate: listDelegate)

Затем добавьте действия в список

list.add(action: ActionsListDefaultButtonModel(localizedTitle: "Create Alarm", 
                 image: UIImage(named: "Alarm clock"),
                 action: { action in
                     // You can use action's list property to control it

                     // - To dismiss
                     action.list?.dismiss()

                     // - To update action appearance
                     action.appearance.//anything
                     // Do not forget to reload actions to apply changes
                     action.list?.reloadActions()
          }))

После этого вы можете представить список

list.present()

// Save list or it will be deallocated and not reachable outside of the scope it was created in
self.list = list

введите здесь описание изображения

person LowKostKustomz    schedule 20.12.2017