尝试对 UITableViewCell 应用平移手势但失败,为啥?

Posted

技术标签:

【中文标题】尝试对 UITableViewCell 应用平移手势但失败,为啥?【英文标题】:Trying to apply pan gesture to UITableViewCell but failed, why?尝试对 UITableViewCell 应用平移手势但失败,为什么? 【发布时间】:2016-05-20 05:36:24 【问题描述】:

因此,我学会了如何在视图中的图片上做出平移手势,并四处移动它。然后我尝试用 TableViewCell 做同样的事情:用平移手势水平移动它,它只是没有反应:

所以我创建了TableViewController.swift,设置了常用的东西以确保它正常运行并显示带有动态表格单元格的数据列表。 代码:

var todoItems = [TodoItem]()
override func viewDidLoad() 
    super.viewDidLoad()
    createSomeData()

override func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    // #warning Incomplete implementation, return the number of sections
    return 1


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    // #warning Incomplete implementation, return the number of rows
    return todoItems.count


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier(constant.cellIdentifier, forIndexPath: indexPath) as! TodoTableViewCell
    cell.todoItem = todoItems[indexPath.row]

    return cell

然后我从调色板中取出Pan Gesture Reconizer,将其放在tableviewcell 上,确保它连接到连接检查器中,然后,ctrl + 将Pan Gesture Reconizer 拖到TableViewController.swift 中:

@IBAction func handlePan(gesture: UIPanGestureRecognizer) 
    let transition = gesture.translationInView(self.view)
    switch gesture.state
    case .Changed:
        if let view = gesture.view 
            view.center = CGPoint(x: view.center.x + transition.x, y: view.center.y)
        
        gesture.setTranslation(CGPointZero, inView: self.view)

    default:break
    


它不起作用。为什么?

【问题讨论】:

【参考方案1】:

您可以尝试使用以下代码以编程方式添加PanGesture

var panRecognizer: UIPanGestureRecognizer!
@IBOutlet weak var tableView: UITableView?

override func viewDidLoad() 
super.viewDidLoad()

    self.panRecognizer = tableView?.panGestureRecognizer;
    self.panRecognizer .addTarget(self, action: "pan:")
    tableView?.addGestureRecognizer(self.panRecognizer)



func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool 
    return true


func pan(rec:UIPanGestureRecognizer)
    println("PanGesture Activated")

希望这会对你有所帮助。

【讨论】:

以上是关于尝试对 UITableViewCell 应用平移手势但失败,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

平移 UITableViewCell 时显示啥视图?

REFrostedViewController 平移手势禁用 tableview 滑动

处理 UITableView 单元格上的平移手势

向 UiTableViewCell 添加删除按钮

UITableViewCell 上的 UIPanGestureRecognizer 覆盖 UITableView 的滚动视图手势识别器

手 势