我正在尝试模拟在应用程序内主屏幕上按下未启用的强制触摸应用程序图标的相同效果。它开始像往常一样褪色,一旦你用深按,它就会恢复到正常状态并发出三次振动(并且不会打开应用程序)。
我找不到关于这个明确案例的 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
}
到目前为止的问题:"非压力"观点不会消失。振动后,如果您在释放触摸时不移动触摸,则视图会像"点击"一样运行(这是一个问题,因为我检测到点击并打开另一个视图)
解决方案是返回一个视图控制器,该控制器将在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)
}
}