模拟"不可用Force Touch"振动和褪色

时间:2016-05-30 09:22:56

标签: ios swift 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 个答案:

答案 0 :(得分:0)

解决方案是返回一个将在viewDidAppear:关闭自己的ViewController。这是一个例子:

// 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)
   }
}