3dtouch для представления (заглянуть без поп-музыки) UIView like contacts app

Я пытаюсь реализовать функцию 3D Touch, которая представляет сводку информации (например, Peek). Но я не хочу, чтобы он всплывал. Я просто хочу просмотреть информацию, как приложение контактов, с помощью contatcs:

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

Он представляет только UIView и не имеет дело с двумя уровнями силы (peek и pop).

Как я могу сделать что-то вроде этого?

Ps: Я не хочу иметь дело с длинным жестом в печати. ​​

Ответ 1

Вступление

Привет

Я знаю, что это немного поздно, возможно, но в случае, если кто-то еще наткнется на это: я, конечно, верю, что это возможно, и я не думаю, что это "нативное поведение для контактов". Хотя это не так просто, как API-интерфейс UIKit для быстрого просмотра. Вам необходимо:

меры

  1. подкласс UIGestureRecognizer (возможно, он также может работать с UITapGestureRecognizer), зарегистрировать UITouch и использовать их свойство force.

  2. Установите UIViewController с прозрачным, но размытым фоном по краям (вместе с modalPresentationStyle .overCurrentContext если я правильно помню), с нужным вам содержимым посередине (очень похоже на обзорное представление). Затем добавьте UIPanGestureRecognizer в центральное представление для увольнения /UIPanGestureRecognizer вверх кнопок.

  3. А затем создайте пользовательский анимационный переход для этого UIViewController который будет запущен, как только свойство force зарегистрированных UITouches из подкласса UIGestureRecognizer будет достаточно высоким. И затем полностью изменено, как только свойство force становится достаточно низким.

Заключительные заметки

Я считаю, что это немного утомительная задача, и может быть более простой путь. Например, более простой способ использовать стороннюю библиотеку для длинных нажимных жестов (которая регистрирует размер касания), но это не даст такого же ощущения.

Ответ 2

Если вы просто хотите заглянуть и не поп, используйте пустой
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
метод.

Убедитесь, что метод существует, но ничего не помещайте в него. Это метод, который вызывал при выполнении pop, что viewControllerToCommit. Обычно вы добавляете VC, который вы выходите, но если он пуст, нет поп-музыки.