Как заставить TipKit показывать подсказку независимо от истории

Мне интересно, есть ли способ заставить TipKit надежно показывать подсказки по требованию? Я хочу, чтобы подсказка появлялась только тогда, когда пользователь нажимает кнопку справки, но я не могу добиться, чтобы это происходило постоянно (т. е. после каждого нажатия).

В этом примере кода он будет работать один раз при каждом запуске только потому, что я вызвалпри инициализации. Обычно я бы не хотел так звонить. Я бы предпочел, чтобы моя всплывающая подсказка вообще не хранила и не использовала историю событий. Но оно все равно должно реагировать на новые события.

      import SwiftUI
import TipKit

struct extraHelp: Tip {
    static let tipRequested = Event(id: "extraHelpRequested")
    
    var title: Text { Text("Extra Help") }
    var message: Text { Text("Suitable amount of explanation here.")}
    
    var rules: [Rule] { [
        #Rule(Self.tipRequested) { $0.donations.count > 0 }
    ]}
    
    // This tip will always be visible when event received
    var options: [Option] {
        [IgnoresDisplayFrequency(true)]
    }
}


struct ViewWithOnScreenHelp: View {
    @State private var onscreenHelp = false
    
    var body: some View {
        VStack {
            Button("Help!") {
                Task { await extraHelp.tipRequested.donate() }
            }
            .popoverTip(extraHelp())
        }
        .padding()
        .task { // This .task would normally go on the app root-view
            try? Tips.resetDatastore()     // not normal use
            try? Tips.configure([
                .displayFrequency(.immediate),
                .datastoreLocation(.applicationDefault),
            ])
        }
    }
}

Я знаю, что Apple не хочет, чтобы я использовал TipKit, но я имею в виду именно UX, и было бы жаль не иметь возможности использовать предоставленные ими части.

0 ответов

Другие вопросы по тегам