- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 subview Controller 的容器 View 上设置了一个 PanGestureRecognizer
。这本质上是一个抽屉 View ,所以我希望 subview Controller 能够处理任何滚动,除非 subview Controller 的 TableView 滚动到顶部并且用户向下平移。在这种情况下,我希望容器 View 手势识别器接管,以便 subview Controller 作为一个整体可以向下动画化。我有一个手势识别器的委托(delegate),如果它不是 subview Controller 和容器 View ,而只是一个 TableView ,并且我将平移手势识别器添加到其中,那么它就可以完美工作。但现在的情况是,委托(delegate)在应该返回 true 的时候返回 true,但handlePan 方法没有被调用?任何想法,将不胜感激。谢谢!
下面的所有代码都位于具有容器 View 的父 UIViewController
中,我正在向其应用手势识别器。一切都显示正确,只是没有调用手势识别器方法,而是调用了委托(delegate)。
func setUpItemDetailsController() {
guard let itemDetailsController = itemDetailsController else { return }
add(itemDetailsController)
itemDetailsContainerView.addSubview(itemDetailsController.view)
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
panGestureRecognizer.delegate = self
itemDetailsContainerView.addGestureRecognizer(panGestureRecognizer)
}
@objc func handlePan(_ sender: UIPanGestureRecognizer) {
...
}
extension MoverScanAndDiscoverResultController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
guard let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer else { return true }
let translation = panGestureRecognizer.translation(in: view).y
let topLimit = view.bounds.height - self.statusAndNavBarCombinedHeight
print(itemDetailsTableView.contentOffset.y)
// Allows for normal UITableView scrolling
if translation < 0
&& resultCardViewBottomConstraint.constant == topLimit
|| itemDetailsController?.tableView.contentOffset.y ?? 0 > 0 {
return false
}
return true
}
}
最佳答案
您是否尝试过使用 UIGestureRecognizerDelegate 函数与其他手势识别器同时进行识别?
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// etc...
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panned(_:)))
panGestureRecognizer.delegate = self
self.tableView.addGestureRecognizer(panGestureRecognizer)
}
@objc
func panned(_ sender: UIPanGestureRecognizer) {
print("Panning")
}
}
extension MyViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true // obviously this could be more refined if you have other gesture recognizers
}
}
我没有尝试将手势识别器添加到容器 View ,但将其直接添加到 tableView 对我来说效果很好。
关于ios - subview Controller 上的 PanGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822237/
是否可以为 PanGestureRecognizer 设置边框,使其只能在有限区域/ View 中平移图像? 非常感谢 ;) 最佳答案 您可以实现 UIPanGestureRecognizer 的委托
我想将 PanGestureRecognizer 添加到 UIViewController 的 UIView。我将 View 分成九个相等的部分,并由它们创建一个 UIViews。我还在每个部分添加了
我是一名新程序员,正在开发一个简单的演示 iOS 程序,我使用 SceneKit 来渲染场景。 我想旋转相机以查看场景的不同视角。但原来的相机控制有点棘手。特别是当我想朝一个方向旋转场景时。例如如果我
我正在使用 ios-charts库,当用户停止在图表上平移时,我需要做一些特殊的逻辑。该库将 panGestureRecognized 方法定义为 fileprivate,因此我无法子类化/覆盖它。它
我正在使用 pangesturerecognizer 在屏幕上移动对象。 如何为对象创建一个边界,使其不超过屏幕顶部的某个点?我正在考虑使用此 imageView.frame.origin.y > 0
我正在尝试将 seektotime 与 Pangesture 识别器一起使用。但它没有按预期进行搜索。 let totalTime = self.avPlayer.currentItem!.durat
我在 subview Controller 的容器 View 上设置了一个 PanGestureRecognizer 。这本质上是一个抽屉 View ,所以我希望 subview Controller
我刚刚开始为 tvOS 构建第一个应用程序,我对它的手势识别能力很好奇。 我的目标是了解手指在 Apple TV Remote 上滑动的方向和位移。 我知道如何检测点击或滑动,甚至是滑动的方向,但不知
我一直在寻找这个问题的解决方案,但没有找到。所以我在我的项目中使用 SWRevealViewController 作为侧边栏菜单,但我希望当用户开始从 View 的左边缘触摸时,侧边菜单会打开。我想要
我在 UIViewController 中有一个 UIScrollView,它由 segue 模态显示,另外一个 UIPanGestureRecognizer 确实关闭了 View Controlle
我正在 Xamarin.Forms(Android 和 iOS)中制作消息传递应用程序。 消息显示在 ListView 中。 现在我想添加一个新功能。当我将消息气球拖到一边时,它会显示消息信息。 用户
我目前有一个 panGesture 识别器附加到也启用了分页的 collectionView。 问题是 panGesture 覆盖了分页。如果可能的话,我希望在 panGesture 之前执行分页操作
我很难让以下内容起作用:我有一个水平 ScrollView ,其中放置了一个网格。我想让网格接收平移手势。 我的 XAML:
我有一个可滚动的 View ,我需要无需滚动主视图即可触发的手势识别器。 我用过这段代码: UISwipeGestureRecognizer *upRecognizer = [[UISwipe
当 touchesBegan() 时,我通过在手指位置创建一个 UIView 在屏幕上创建了一个圆圈: 在 ViewController 中: override func touchesBegan(t
我正在尝试使用 CGAffineTransform 旋转我拥有的 ImageView。基本上,我想要发生的是每次 x 坐标增加时,我希望 ImageView 旋转多一点。 我计算了一下,我希望 Ima
我正在尝试“裁剪”imageView 内的图像。裁剪的含义:如果用户向左平移,则图片将从右侧向左侧裁剪。因此,当用户平移到右侧时,图片将完全显示,如果用户平移到最左侧,图片将不可见。 我尝试了以下方法
我不想在我的应用程序中使用 SWRevealViewController,因为我按照给定链接“https://www.youtube.com/watch?v=5SUV1YY2yxQ”中的步骤进行操作。
我有 2 个 View 并使用以下代码检测它们的碰撞。如果物体移动缓慢,它工作正常,即它给出运动中的坐标。但是,当通过手势高速抛出 View 时,中间坐标会被忽略。我只得到初始坐标和结束坐标。当 2
我有一个带有 PanGestureRecognizer 的 UIImageView。当我拖到 ImageView 之外时,我想认为平移已结束,但显然 GestureRecognizer 继续触发,就好
我是一名优秀的程序员,十分优秀!