Имитация "недоступных Force Touch" вибраций и затуханий

Я пытаюсь смоделировать тот же эффект, что и нажатие неактивного значка приложения Force Touch на домашнем экране внутри приложения. Он начинает исчезать как обычно, и после глубокого нажатия он возвращается в свое нормальное состояние и совершает три вибрации (и не открывает приложение).

Я не смог найти никакой документации по Apple в отношении этого явного случая, так что мои усилия пока что симулируются:

func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
    // I have a list of 'supported items' that will return the correct preview ViewController, 
    // and some of them are not supported returning the following lines:

    // IMPORTANT TODO: Verify this is "Legal"
    AudioServicesPlaySystemSound(1521)

    return nil
}

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

1 ответ

Решением было вернуть ViewController, который бы закрылся viewDidAppear:, Вот пример:

// In UIViewControllerPreviewingDelegate
func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
      return PeekPopInvisibleViewController()
}

// Custom class to simulate 'no option':
private class PeekPopInvisibleViewController: UIViewController {

   init() {
      super.init(nibName: nil, bundle: nil)
      view.backgroundColor = UIColor.clearColor()
   }

   required init?(coder aDecoder: NSCoder) {
      super.init(coder: aDecoder)
   }

   override func viewDidAppear(animated: Bool) {
      dismissViewControllerAnimated(false, completion: nil)

      // This plays the '3 vibration' effect
      AudioServicesPlaySystemSound(1521)
   }
}
Другие вопросы по тегам