Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   fmx + TTrackbar + Ios + Taptic Feedback (https://www.delphipraxis.net/213171-fmx-ttrackbar-ios-taptic-feedback.html)

areyoudoneyet 8. Jun 2023 22:04

fmx + TTrackbar + Ios + Taptic Feedback
 
Hallo,
ich bin relativ neu bei der ganzen FMX Geschichte. Heute habe ich ein Tutorial nachgebaut in Delphi 11 das eigentlich für C# Maui Xaml ist.
Da viel mir auf als ich die Slider / Trackbars in der Maui version auf meinem Iphone genutzt habe, es ein Haptisches Feedback gibt wenn die Slider auf der Min Position gezogen werden und auf der Max Position. das selbe habe ich dann auch in SwiftUI nachgebaut, genau das selbe verhalten. Die FMX Version hat leider das verhalten nicht und es kommt kein haptisches Feedback.

Weiss jemand wie man das Aktivieren oder Ansprechen kann? ( Weiss auch nicht ob ich mich korrekt ausgedrückt habe)

Viele Grüße

Rollo62 9. Jun 2023 07:04

AW: fmx + TTrackbar + Ios + Taptic Feedback
 
Ich bin jetzt nicht sicher, aber glaube kaum dass dies ein Android iOS Standardverhalten ist. Zumindest unter Android musst Du dafür die Vibrate Permission setzen, deshalb glaube ich dass es wohl etwas MAUI spezifisches ist.

Kann man aber leicht selber vibrieren lassen, allerdings könnte es mittlerweile zig verschiedene Formen und Vibrationsmuster von haptischen Feedback geben, hab ich aktuell nicht gecheckt was es alles gibt.
Für mich reicht ein kurzes, einmaliges
vibrieren immer aus, da bin ich nicht so modern.

areyoudoneyet 10. Jun 2023 02:29

AW: fmx + TTrackbar + Ios + Taptic Feedback
 
Code:
import SwiftUI

struct ContentView: View {
   
    @State private var testValue: Double = 0
    var body: some View {
        VStack {
            Slider(value: $testValue,in:-100...100, step:1)
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
hm Also das ist schon Standart verhalten von Slidern in iOS.

Rollo62 11. Jun 2023 08:39

AW: fmx + TTrackbar + Ios + Taptic Feedback
 
Vielleicht funktioniert das so in der Art bei Dir:

Delphi-Quellcode:
uses
     Macapi.ObjectiveC
  //   Macapi.CoreFoundation
  , Macapi.ObjCRuntime
  // iOS
  , iOSapi.CocoaTypes
  , iOSapi.Foundation
  ;

type
    TVibrate_Haptic_Feedback = (Weak, Medium, Strong);
    TVibrate_Haptic = class

        // Haptic Vibrate feedback generation
        // UIImpactFeedbackStyleLight, UIImpactFeedbackStyleMedium, UIImpactFeedbackStyleHeavy
        class procedure Execute(const AFeedback : TVibrate_Haptic_Feedback);

    end;





implementation

Uses
    Macapi.CoreFoundation
  ;

const
  UIImpactFeedbackStyleLight = 0;
  {$EXTERNALSYM UIImpactFeedbackStyleLight}
  UIImpactFeedbackStyleMedium = 1;
  {$EXTERNALSYM UIImpactFeedbackStyleMedium}
  UIImpactFeedbackStyleHeavy = 2;
  {$EXTERNALSYM UIImpactFeedbackStyleHeavy}

type
  UIImpactFeedbackStyle = NSInteger;

  UIFeedbackGeneratorClass = interface(NSObjectClass)
  ['{6B7EC779-C032-4F7A-B51B-BAF0E4249CE6}']
  end;

  UIFeedbackGenerator = interface(NSObject)
    ['{5EFF0FE8-F7F1-4443-90B0-94B69C6F9F01}']
    procedure prepare; cdecl;
  end;
  TUIFeedbackGenerator = class(TOCGenericImport<UIFeedbackGeneratorClass, UIFeedbackGenerator>) end;

  UIImpactFeedbackGeneratorClass = interface(NSObjectClass)
  ['{4AD834AB-9CC2-43F2-891B-F0BDD4F03732}']
  end;

  UIImpactFeedbackGenerator = interface(UIFeedbackGenerator)
  ['{8BFE603E-FFBC-4109-9AAE-62F77ED4CD57}']
  function initWithStyle(style: UIImpactFeedbackStyle): Pointer; cdecl;
  procedure impactOccurred; cdecl;
  end;
  TUIImpactFeedbackGenerator = class(TOCGenericImport<UIImpactFeedbackGeneratorClass, UIImpactFeedbackGenerator>) end;



// Haptic Vibrate generation
// UIImpactFeedbackStyleLight, UIImpactFeedbackStyleMedium, UIImpactFeedbackStyleHeavy
class procedure TVibrate_Haptic.Execute(const AFeedback : TVibrate_Haptic_Feedback);
var
  vibrationFeedback: UIImpactFeedbackGenerator;
begin
  vibrationFeedback := TUIImpactFeedbackGenerator.Wrap(TUIImpactFeedbackGenerator.OCClass.alloc);
  case AFeedback of
    Weak : vibrationFeedback.initWithStyle( UIImpactFeedbackStyleLight);
    Medium: vibrationFeedback.initWithStyle( UIImpactFeedbackStyleMedium);
    Strong: vibrationFeedback.initWithStyle( UIImpactFeedbackStyleHeavy);
    else
            vibrationFeedback.initWithStyle( UIImpactFeedbackStyleMedium);;
  end;

  vibrationFeedback.impactOccurred;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz