如何仅在 UILongPressGesture 之后启用 UIPanGestureRecognizer?
How do I only enable UIPanGestureRecognizer only after UILongPressGesture?
我是 swift 的新手,不确定这是否可行,但我 运行 遇到了一个问题,我在 UICollectionView 中,它启用了滚动。默认情况下,我只希望启用滚动。但是,如果用户保持足够长的时间,我希望禁用滚动并启用 UIPanGestureRecognizer。在 UILongPress 之后启用 UIPanGesture 时遇到问题。 pangesture 完成后,应再次启用滚动并禁用平移。
首先,编译器抱怨你的变量没有默认值。
您可以通过添加初始化方法并在其中设置手势来解决此问题。
或者您可以将变量设置为具有默认值 nil
的 Optional
变量。但在那之后,你必须打开包装才能获得真正的价值。
或者如果你真的知道这是什么:
class YourViewController: xxxx, yyyy {
lazy var panGesture: UIPanGestureRecognizer! = {
let pan = UIPanGestureRecognizer(…
pan.delegate = self
return pan
}
…
}
其次,您可以使用 UIGestureRecognizerDelegate
来提供帮助。
起初,您的平移手势是禁用的。长按后,您将禁用集合视图 isScrollEnabled
并启用平移手势。 (在平移手势完成后,禁用平移手势并重新启用集合视图 isScrollEnabled
)
我是 swift 的新手,不确定这是否可行,但我 运行 遇到了一个问题,我在 UICollectionView 中,它启用了滚动。默认情况下,我只希望启用滚动。但是,如果用户保持足够长的时间,我希望禁用滚动并启用 UIPanGestureRecognizer。在 UILongPress 之后启用 UIPanGesture 时遇到问题。 pangesture 完成后,应再次启用滚动并禁用平移。
首先,编译器抱怨你的变量没有默认值。
您可以通过添加初始化方法并在其中设置手势来解决此问题。
或者您可以将变量设置为具有默认值 nil
的 Optional
变量。但在那之后,你必须打开包装才能获得真正的价值。
或者如果你真的知道这是什么:
class YourViewController: xxxx, yyyy {
lazy var panGesture: UIPanGestureRecognizer! = {
let pan = UIPanGestureRecognizer(…
pan.delegate = self
return pan
}
…
}
其次,您可以使用 UIGestureRecognizerDelegate
来提供帮助。
起初,您的平移手势是禁用的。长按后,您将禁用集合视图 isScrollEnabled
并启用平移手势。 (在平移手势完成后,禁用平移手势并重新启用集合视图 isScrollEnabled
)