- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个垂直滚动的 collectionView
,覆盖设备上的整个屏幕(即全屏)。
我已经为我的 collectionView
注册了 向左和向右滑动
手势。
//------------right swipe gestures in collectionView--------------//
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.rightSwiped))
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.collectionView.addGestureRecognizer(swipeRight)
//-----------left swipe gestures in collectionView--------------//
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.leftSwiped))
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.collectionView.addGestureRecognizer(swipeLeft)
问题:collectionView
垂直滚动时,左右滑动手势回调不会触发。
是否有任何简单的解决方法。
这是我的整个 ViewController
类
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var collectionView: UICollectionView!
let reuseIdentifier = "cell" // also enter this string as the cell identifier in the storyboard
var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
collectionView.dataSource = self
collectionView.delegate = self
//------------right swipe gestures in collectionView--------------//
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.rightSwiped))
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.collectionView.addGestureRecognizer(swipeRight)
//-----------left swipe gestures in collectionView--------------//
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.leftSwiped))
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.collectionView.addGestureRecognizer(swipeLeft)
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCell
// Use the outlet in our custom class to get a reference to the UILabel in the cell
cell.lable.text = self.items[indexPath.item]
cell.backgroundColor = UIColor.yellowColor()
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print(indexPath.row)
}
func rightSwiped()
{
print("right swiped ")
}
func leftSwiped()
{
print("left swiped ")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这是我的 collectionView
的样子
编辑 1
已解决,解决方案点击here
最佳答案
UICollcetionView
的默认手势识别器的委托(delegate)
是 Collection View 对象本身(显然)。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
的默认实现在 UICollectionView 类中返回 YES
。
因此,为了解决您的问题,您需要将 Collection View 对象设置为“左”和“右”滑动手势识别器的委托(delegate),如下所示。
swipeRight.delegate = collectionView;
swipeLeft.delegate = collectionView;
这应该使您的 rightSwiped()
和 leftSwiped()
在相应的滑动发生时被触发。
关于ios - 垂直滚动时在未调用的 collectionView 上向左/向右滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38346679/
问题是我必须几乎严格水平滑动才能使滑动操作起作用。我希望滑动时有更多的自由度。我希望当我对角滑动时滑动也能起作用。我应该如何更改此代码? 这是代码 public class OnSwipeTouch
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyO
我正在查看 DeleteIntent 以接收通知 View 滑动以关闭。如果用户向左或向右滑动,我看不到它可以返回。基本上,我想用左滑动表示否,右滑动表示是;而不是为其他 UI 使用 Android
我最近和现在都在玩 jquery - 试图让动画工作。 整个想法基本上是一个全屏 slider 。我们有几个部分的绝对位置和高度为文档的 100% - 在 jquery 中我们正在玩 z-index。
我正在使用: ViewController = [[ViewControllerClass alloc] initWithNibName:@"ViewControllerClass" bundle:[
我试图通过使用 jquery 向右缓慢滑动来显示内容来扩展按钮,但我无法让它工作。另外,我没有控制台错误 $( document ).ready(function() { $('.btn'
试图将这个“手势”功能添加到我的第一个程序中,几乎我所做的每一次搜索都来到了这个线程: Fling gesture detection on grid layout 我能够让它工作..但就我而言,我不
这个问题在这里已经有了答案: How to turn off the automatic gesture to go back a view with a navigation controller
我试图检测左右滑动,但我遇到了一个问题,例如,如果用户向上或向下滑动并稍微向其中一侧滑动,它会将其检测为向左滑动(例如) constructor(props) { super(props)
我一直在研究图片库 [html5],它在桌面版本中运行良好,我想为 Ipad/平板电脑设备添加基于触摸的事件。 您能否建议如何使用 javascript/jquery 添加基于触摸的事件。 谢谢,斯里
我需要检测左/右滑动并使用react,但希望用户能够在同一元素上滚动,因此只要他仅向左/向右移动手指,并进行最大的上/下移动X像素时,它不应该滚动,但是当他超过X时,它应该滚动。 所以我所做的是: v
原始 HTML: Donor Rankings /img/right_arrow.png" style="right:0; padding-left:10px; cursor:pointer
我想向 ScrollView 添加滑动功能(从右到左和从左到右),但不拦截所有触摸事件,这样子按钮仍然可以点击。 我像这样向 ScrollView 添加了触摸监听器: this.getView().f
我已经像这样创建了一个 RecyclerView ItemTouchHelper - public class MyItemTouchHelper extends android.support.v7
我想同时滑动两个 div(左/右、右/左、上/下、下/上)。这是一个 JSFiddle它在哪里做的,但是当我在这个 JSFiddle 中隐藏 div 时,它不是同时在彼此之上的。我试过使用 anima
当我切换我的滑动菜单时,我会让我的菜单在右边滑动。怎么做到的?到目前为止,我只能通过 position:fixed 来做到这一点,但这对我有害,因为它会影响导航——显然屏幕是固定的!那么如何在不修复我
我有一个垂直滚动的 collectionView,覆盖设备上的整个屏幕(即全屏)。 我已经为我的 collectionView 注册了 向左和向右滑动 手势。 //------------right
我正在开发一个应用程序,我需要一个类似于我的三星 Galaxy S 的联系人 ListView 的 ListView: 当我向右滑动手指时,我可以向该联系人发送消息。 当我向右滑动手指时,我可以调用我
我在多个地方找到了以下代码来向左/向右滑动: $('#hello').hide('slide', {direction: 'left'}, 1000); 但是,我无法让它工作。这是我正在尝试的简约测试
这个问题在这里已经有了答案: jQuery: Slide left and slide right (4 个答案) 关闭 9 年前。 有没有一种简单的方法可以根据我在下面提供的上/下代码片段将其变成
我是一名优秀的程序员,十分优秀!