0

アプリ内のホーム画面で有効になっていないフォースタッチアプリのアイコンを押すのと同じ効果をシミュレートしようとしています。通常どおりフェードアウトし、深く押すと通常の状態に戻り、3 回振動します (アプリは開きません)。

この明示的なケースに関する 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
}

これまでの問題点: 「押されていない」ビューがフェードしません。振動の後、タッチを離したときにタッチを動かさないと、ビューは「タップ」されたように動作します (タップを検出して別のビューを開くため、これは問題です)

4

1 に答える 1

0

解決策は、自分自身を閉じる 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)
   }
}
于 2016-05-30T09:42:01.023 に答える