6 touch uigesturerecognizer ios uicollectionview swift
我有这个UICollectionView占据屏幕的主要部分,有一个UIButton显示菜单.当用户点击屏幕的任何一侧时,我想要隐藏菜单,这UICollectionView对我来说很不幸.尝试在其他视图下面的代码,它运作良好...但不是UICollectionView.该函数不会被调用.
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
hidemenu()
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
问题是什么?谢谢你的时间.
或
如何触发touchesBegan在UIViewController哪里UICollectionView居住
在点击滚动控制器(如UIScrollView,UITableView,UICollection等)时,不会调用touchesBegan方法.因为他们有自己的selector方法.为了处理这种情况,你需要创建UITapGesture的UICollectionView.在点击时UICollectionView,它的选择器方法调用并执行您想要的任何操作.
以下是指导您的链接.如何创建双击手势UICollectionView.借助此功能,您还可以创建单击手势.
Collection View + Double Tap Gesture
编辑: 执行以下更改,它工作正常.
步骤1:声明handleTap在SwipeMenuViewController.
func handleTap(sender: UITapGestureRecognizer) {
println("called swipe")
}
Run Code Online (Sandbox Code Playgroud)
第2步:创建SwipeMenuViewController控制器的全局变量.那是不合适的viewDidLoad()
var vc2 = SwipeMenuViewController()
Run Code Online (Sandbox Code Playgroud)

步骤3:声明TapGesture在viewDidLoad()
var tap = UITapGestureRecognizer(target: vc2, action : "handleTap:")
tap.numberOfTapsRequired = 1
self.collectionView.addGestureRecognizer(tap)
Run Code Online (Sandbox Code Playgroud)
输出:
叫滑动
希望这对你有所帮助.
您可以将 UITapGestureRecognizer 添加到 UICollectionView 并创建一个操作,以便在用户触摸集合外部或任何位置时关闭视图。
步骤 1创建点击手势以关闭视图
override func viewDidLoad() {
super.viewDidLoad()
...
let tap = UITapGestureRecognizer(target: self, action: #selector(didTapOutsideCollectionView(recognizer:)))
tap.numberOfTapsRequired = 1
self.collectionView.addGestureRecognizer(tap)
}
Run Code Online (Sandbox Code Playgroud)
步骤 2通过点击位置实施您想要的操作
@objc func didTapOutsideCollectionView(recognizer: UITapGestureRecognizer){
let tapLocation = recognizer.location(in: self.view)
//The point is outside of collection cell
if collectionView.indexPathForItem(at: tapLocation) == nil {
dismiss(animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9602 次 |
| 最近记录: |