3

私のアプリでは、デバイスが 3D Touch に対応している場合にのみ表示される設定を表示します。現時点では、デバイスにios9があるかどうかを確認しています。

if #available(iOS 9.0, *)

問題は、たとえば iPhone 6 には iOS 9 がありますが、3D Touch がないことです。swiftで3D Touchの可能性を確認するにはどうすればよいですか?

この投稿を見つけましたが、迅速な解決策はありません: iOS9 デバイスで 3D タッチがサポートされ、有効になっているかどうかを確認してください

もう1つ質問です。iOS 9 と 3D Touch が利用可能かどうかを確認したいと思います。私はこれを試します:

if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) {

しかし、私はいつもこのエラーを受け取ります:

「if」条件の後に「{」が必要です

4

2 に答える 2

7

この迅速なコードを試してselfください。UIViewController

func is3DTouchAvailable() -> Bool
{
    return self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
}
于 2015-11-13T06:07:39.337 に答える
2

はい、if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available動作します。if #available(iOS 9, *)

Peek と Pop の例:

override func viewDidLoad()
    {
        super.viewDidLoad()

        if #available(iOS 9, *) {
            if (traitCollection.forceTouchCapability == .Available) {
                if let collectionView = self.collectionView {
                    registerForPreviewingWithDelegate(self, sourceView: collectionView)
                }
            }
        }
    }

さらに、UITouch オブジェクトがある場合 ( touchesBegantouchesMoved、 ... などのメソッドから取得できます)、デバイスが 3D Touch 対応の場合、touch.maximumPossibleForceプロパティは 0 より大きくなりif #available(iOS 9, *)ます。

詳細については、こちらのPeek and Pop チュートリアル、または3D Touch コードのサンプルをご覧ください。

于 2016-01-03T22:02:09.660 に答える