ios - 如何创建 UIBarButton 以使用 Swift 调用 UITapGestureRecognizer 函数?
问题描述
我的场景,我正在尝试实现UIBarButton
click to call 下面两个functions
。下面的代码已经可以使用,view
tab and pan
但现在我正在更改按钮单击以调用以下两个函数。下面怎么修改code
?
@objc
func handleCardTap(recognzier:UITapGestureRecognizer) {
switch recognzier.state {
case .ended:
animateTransitionIfNeeded(state: nextState, duration: 0.9)
default:
break
}
}
@objc
func handleCardPan (recognizer:UIPanGestureRecognizer) {
switch recognizer.state {
case .began:
startInteractiveTransition(state: nextState, duration: 0.9)
case .changed:
let translation = recognizer.translation(in: self.cardViewController.handleArea)
var fractionComplete = translation.y / cardHeight
fractionComplete = cardVisible ? fractionComplete : -fractionComplete
updateInteractiveTransition(fractionCompleted: fractionComplete)
case .ended:
continueInteractiveTransition()
default:
break
}
}
解决方案
如果您需要从 a 调用这两个点击手势识别器功能UIBarButtonItem
,最好的办法是创建一个自定义视图栏按钮项并将手势识别器添加到该自定义视图。像这样的东西会起作用:
let tapGestureView = UIView() // initialize & size this as you need
tapGestureView.addGestureRecognizer(UITapGestureRecognizer(action: #selector(handleCardTap(_:)), target: self))
tapGestureView.addGestureRecognizer(UITapGestureRecognizer(action: #selector(handleCardPan(_:)), target: self))
let barButton = UIBarButtonItem(customView: tapGestureView)
这是UITapGestureRecognizers 和UIBarButtonItems的一些额外资源。不过,为同一个视图设置 2 个不同的轻击手势似乎有点奇怪,其中一个是平移动作(至少按名称)似乎很奇怪,但这就是您要实现的方式!
推荐阅读
- python - 无法正确标注 numpy 数组的字典
- python - 我看不到 numpy 数组的问题(图像处理)
- css - 溢出内容后的 CSS 设置 flex-wrap
- tensorflow - Tensorflow - ValueError:从拆分数组创建数据集时无法将 NumPy 数组转换为张量
- python - Python Web-scraping - 嵌套标签
- c - 创建结构c时结构中的问题
- python - 在另一个方法中模拟方法中的输入
- python-3.x - 为什么我无法访问网站的完整响应代码?
- c - Flex:REJECT 一次拒绝一个角色?
- java - 如何从 c++ 和 swig 重定向 python 和 java 打印