【发布时间】:2021-01-27 23:33:36
【问题描述】:
我有一个带有简单文本的NavigationLink。如果确定的条件得到验证,应该打开一个秘密登录页面。
但我注意到我可以通过两个简单的技巧绕过“isActive”:
- 长按文字然后松开,秘密视图会自动加载
- 按住并拖动文本,秘密视图会自动加载
所以我决定实施并抓住longPress。
实现它,我解决了第一个问题,但秒数仍然存在。
这里有一个视频可以更好地解释这个问题:https://youtu.be/vuaT3lwUhLg
这里是视频中记录的简单sn-p:
// 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 从来都不是真的,为什么会被忽略?
是一个错误的实现(我想)还是一个快速的错误?
【问题讨论】:
标签: ios swift button swiftui swiftui-ontapgesture