2016-11-25 4 views
2

私は触覚フィードバックのために新しいUIImpactFeedbackGeneratorを使用しようとしていますが、動作しません。UIImpactFeedbackGeneratorが動作しません

  • iPhone 7
  • の試験システム触覚の設定は、私はObjective-Cの

    UIImpactFeedbackGenerator *myGen = [[UIImpactFeedbackGenerator alloc] init]; 
    [myGen initWithStyle:(UIImpactFeedbackStyleMedium)]; 
    [myGen impactOccurred]; 
    myGen = NULL; 
    

    に次のコード例を使用してい

を有効になっているのiOS 10.1.1

  • 私はUILongPressGestureRecognizer代理人の中でそれを引き起こしています。

    何が問題なのでしょうか?

  • +0

    'impactOccurred'を呼び出す前に' prepare'を呼び出すことをお勧めします。 – donnywals

    +0

    @donnywalsええ、私もそれを試みたが、助けていない:/ – pqvst

    答えて

    1

    私は、ドキュメントから、同じ問題に遭遇した:これらのメソッドを呼び出すと、直接の触覚を果たしていないことに注意してください...

    。 代わりに、システムにイベントを通知します。システムは、 は、デバイスに基づいて触覚を再生するか、 アプリケーションの状態、残りのバッテリー電力量、および他の ファクタを決定する。たとえば、触覚フィードバックは現在再生されています:

    • サポートされているTaptic Engine(iPhone 7とiPhone 7 Plus)を搭載したデバイスの場合。
    • アプリがフォアグラウンドで実行されているとき。システムが
    • ハプティックス設定が有効な場合。

    私は ...あなたはそれが起動すべき時に知られているにシステムを信頼しなければならないと思い、私はAudioServicesPlaySystemSound and k​System​Sound​ID_Vibrateを使用-SO明白な理由のために、このアプローチが気に入らなかった:

    ..一部のiOSデバイスでは、k System Sound ID_Vibrate 定数を渡して振動を呼び出すことができます。他のiOSデバイスでは、この 関数をその定数で呼び出すと何もしません。

    のObjective-C

    import AudioToolbox 
    AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 
    

    スウィフト3

    import AudioToolbox 
    AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate)) 
    
    1

    私の触覚要求が時々失敗するだろう、と彼は私を呼んでいた私はなぜWWDC 2017でAppleのエンジニアを求めて次の実行ループのimpactOccurredのように:

    [self.feedbackGenerator performSelector:@selector(impactOccurred) withObject:nil afterDelay:0.0f]; 
    

    チャームのように働いた!

    関連する問題