iOS17.2 iPhoneSE横屏TipKit弹窗致Sheet按钮失效问题求助
iOS 17.2 iPhone SE横屏TipKit导致Sheet按钮失效的绕过方案
在iPhone SE(右横屏模式)或其模拟器运行iOS 17.2系统时,当TipKit的popoverTip通知显示在屏幕上后,触发Sheet的“Hit Me!”按钮会出现点击失效的问题。以下是可重现该Bug的完整代码:
import SwiftUI import TipKit @main struct TipKit_WithPresentPageApp: App { var body: some Scene { WindowGroup { ContentView() .task { try? Tips.resetDatastore() try? Tips.configure([ .datastoreLocation(.applicationDefault) ]) } } } } struct ContentView: View { @State private var isPresented: Bool = false var body: some View { NavigationStack { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) .popoverTip(MyTip()) .padding(100) Button("Hit Me!") { isPresented.toggle() // TipKit通知显示时,该按钮在iPhone SE及模拟器上失效 } .padding() .sheet(isPresented: $isPresented) { PresentPage() } } } } } struct PresentPage: View { var body: some View { Text("Hello, world again!") .font(.title) } } struct MyTip: Tip { var title: Text { Text("Test") } var message: Text? { Text("Hi") } }
绕过方案
方案1:延迟Sheet触发时机
通过给Sheet的显示添加短暂延迟,等待TipKit的popover完成消失或交互区域释放后再触发Sheet:
Button("Hit Me!") { // 延迟300毫秒,确保Tip的交互区域已释放 DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { isPresented.toggle() } }
方案2:手动控制Tip的显示生命周期
通过TipKit的参数规则,控制Tip仅在特定场景下显示,避免与Sheet按钮交互冲突:
- 修改
MyTip添加显示规则:
struct MyTip: Tip { var title: Text { Text("Test") } var message: Text? { Text("Hi") } // 添加规则:仅当用户未见过该Tip时显示 var rules: [Rule] { #Rule(Self.$hasSeenTip) { $0 == false } } @Parameter static var hasSeenTip: Bool = false }
- 在按钮点击时标记Tip已查看,避免后续显示:
Button("Hit Me!") { MyTip.hasSeenTip = true isPresented.toggle() }
方案3:调整Tip的显示位置
修改popoverTip的附着位置,避免Tip的交互区域覆盖按钮:
// 将Tip附着到NavigationStack的Toolbar上,远离按钮区域 NavigationStack { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) .padding(100) Button("Hit Me!") { isPresented.toggle() } .padding() .sheet(isPresented: $isPresented) { PresentPage() } } .toolbar { ToolbarItem(placement: .navigationBarTrailing) { Image(systemName: "info.circle") .popoverTip(MyTip()) } } }
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

