我有NavigationLink
一个简单的文字。如果确定的条件得到验证,应该打开一个秘密登录页面。
但我注意到我可以isActive
用两个简单的技巧绕过“”:
- 长按文本并释放,秘密视图自动加载
- 按下并拖动文本,秘密视图自动加载
所以我决定实施并抓住longPress
.
实施它,我解决了第 1 个问题,但秒数仍然存在。
这里有一个视频可以更好地解释这个问题:https ://youtu.be/vuaT3lwUhLg
这是视频中记录的简单片段:
// the secret logged page
struct LoggedView: View {
var body: some View {
Text("secret view")
}
}
// the example
struct ContentView: View {
// loginSuccess is FALSE, so LoggedView() should not be called...
@State var loginSuccess: Bool = false
var body: some View {
NavigationView {
NavigationLink(destination: LoggedView(), isActive: $loginSuccess) {
Text("LOGIN")
.background(Color.yellow)
.foregroundColor(.black)
.padding()
.onTapGesture(perform: {
// false, disabled to show the issue
loginSuccess = false
})
// if not implemented, longpress load the secret view
.onLongPressGesture {}
}
}
}
}
它出什么问题了?
loginSuccess
从来都不是真的,为什么会被忽略?
是一个错误的实现(我想)还是一个快速的错误?