Мое приложение — iOS 16+. Всем пользователям iOS 17+ я хотел бы использовать TipKit для отображения подсказок по использованию.
На основе некоторых руководств я создал следующую настройку с использованием фиктивного протокола, чтобы иметь возможность использовать popupTip без ошибок компиляции iOS 16 (см. ниже)
Хотя в целом это работает, советы отображаются несколько раз. Однако, если я правильно понимаю документацию Apple, этого не должно произойти. Каждая подсказка должна отображаться только один раз.
Однако при использовании более одной подсказки последняя подсказка отображается снова и снова, как только соответствующее представление становится видимым (без использования resetDatastore()).
Это из-за моей настройки с использованием фиктивного протокола? Или я вообще что-то делаю не так?
Полная настройка:
/// 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
}
}
}
Теперь я могу использовать подсказки в своем коде:
struct TipTestView: View {
var body: some View {
Text("Hello, World!")
.popupTip(SampleTip())
}
}
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")
}
}
TipKit настроен в настройках моего приложения:
.task {
if #available(iOS 17, *) {
#if DEBUG
//try? Tips.resetDatastore()
#endif
try? Tips.configure([
.datastoreLocation(.applicationDefault),
.displayFrequency(.immediate)
])
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ios-16-app
Советы TipKit отображаются несколько раз при использовании в приложении iOS 16+. ⇐ IOS
Программируем под IOS
1767374094
Anonymous
Мое приложение — iOS 16+. Всем пользователям iOS 17+ я хотел бы использовать TipKit для отображения подсказок по использованию.
На основе некоторых руководств я создал следующую настройку с использованием фиктивного протокола, чтобы иметь возможность использовать popupTip без ошибок компиляции iOS 16 (см. ниже)
Хотя в целом это работает, советы отображаются несколько раз. Однако, если я правильно понимаю документацию Apple, этого не должно произойти. Каждая подсказка должна отображаться только один раз.
Однако при использовании более одной подсказки последняя подсказка отображается снова и снова, как только соответствующее представление становится видимым (без использования resetDatastore()).
Это из-за моей настройки с использованием фиктивного протокола? Или я вообще что-то делаю не так?
Полная настройка:
/// 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
}
}
}
Теперь я могу использовать подсказки в своем коде:
struct TipTestView: View {
var body: some View {
Text("Hello, World!")
.popupTip(SampleTip())
}
}
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")
}
}
TipKit настроен в настройках моего приложения:
.task {
if #available(iOS 17, *) {
#if DEBUG
//try? Tips.resetDatastore()
#endif
try? Tips.configure([
.datastoreLocation(.applicationDefault),
.displayFrequency(.immediate)
])
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79859314/tipkit-tips-are-shown-multiple-times-when-used-in-ios-16-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия