尝试将平移手势应用于UITableViewCell但失败了,为什么?

时间:2016-05-20 05:36:24

标签: ios swift uitableview gesture uipangesturerecognizer

所以我学会了如何在视野中的图片上做一个平移手势,然后移动它。然后我尝试用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 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码以编程方式添加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")
}

希望这会对你有所帮助。