Kann ein TipKit-Tipp dauerhaft verworfen/als angezeigt markiert werden, indem man außerhalb des Tipps tippt?IOS

Programmierung für iOS
Anonymous
 Kann ein TipKit-Tipp dauerhaft verworfen/als angezeigt markiert werden, indem man außerhalb des Tipps tippt?

Post by Anonymous »

Ich verwende das TipKit in meiner iOS 16+-App, um dem Benutzer Nutzungshinweise anzuzeigen. Da TipKit ab iOS 17+ verfügbar ist, verwende ich den unten gezeigten protokollbasierten Wrapper.
Während die Anzeige von Tipps im Allgemeinen gut funktioniert, ist mir aufgefallen, dass Tipps immer wieder auftauchen, bis sie aktiv über die X-Schließen-Schaltfläche innerhalb des Tipps verworfen werden. Auch wenn ein Tipp von außen den Tipp verwirft, scheint dies nicht auszureichen, um den Tipp als angezeigt zu markieren und zu verhindern, dass er erneut angezeigt wird.
Ist das ein allgemeines/beabsichtigtes Verhalten oder ein Problem mit meinem Setup?
Gibt es eine Möglichkeit, durch Tippen von außen zu verhindern, dass Tipps mehrmals angezeigt werden?
Tipps sollten so wenig störend wie möglich sein. Daher sollte ein einfaches Antippen draußen ausreichen, um zu verhindern, dass sie wieder angezeigt werden.

Vollständige Einrichtung:

Code: Select all

/// Protocol for ensuring compatibility.
/// Enables tips to be passed and stored as properties without availability issues.
@available(iOS, obsoleted: 17, message: "This will be removed once we only support iOS 17+")
public protocol TipSupport {
@available(iOS 17, *)
var tip: AnyTip { get }
}

@available(iOS 17, *)
public extension Tip where Self: TipSupport {
var tip: AnyTip { AnyTip(self) }
}

public extension View {
/// Helper for making the `popupTip` modifier available for iOS  some View {
if #available(iOS 17, *), let tip = tipSupport?.tip {
self.popoverTip(tip, arrowEdge: arrowEdge)
} else {
self
}
}
}
Jetzt kann ich Tipps in meinem Code verwenden:

Code: Select all

struct TipTestView: View {
// let sampleTip = SampleTip()

var body: some View {
Text("Hello, World!")
.popupTip(SampleTip())
//.popupTip(sampleTip) // no difference
}
}

struct SampleTip: Tip, TipSupport {
var id: String { "SampleTip" }

var title: Text {
Text("Some Title")
}

var message: Text? {
Text("More information")
}

var image: Image? {
Image(systemName: "hand.tap")
}
}

Code: Select all

TipKit
ist in meinem App-Setup konfiguriert:

Code: Select all

.task {
if #available(iOS 17, *) {
#if DEBUG
//try? Tips.resetDatastore()
#endif

try? Tips.configure([
.datastoreLocation(.applicationDefault),
.displayFrequency(.immediate)
])
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post