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
}
}
}
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
TipKitCode: Select all
.task {
if #available(iOS 17, *) {
#if DEBUG
//try? Tips.resetDatastore()
#endif
try? Tips.configure([
.datastoreLocation(.applicationDefault),
.displayFrequency(.immediate)
])
}
}
Mobile version