2017-06-02 49 views
1

我有UIViewController,我已经在故事板中添加了一个UITableView,后来我添加了向上滑动手势识别器的视图,但没有发生任何事。滑动垂直手势不工作与UITableView

这是我的代码

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate { 

@IBOutlet weak var tableview: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let swipeRegongnizer = UISwipeGestureRecognizer(target: self, action: #selector(self.handleSwipeUp)) 
    swipeRegongnizer.direction = UISwipeGestureRecognizerDirection.up 
    swipeRegongnizer.delegate = self 
    tableview.addGestureRecognizer(swipeRegongnizer) 
} 

func handleSwipeUp(gesture: UISwipeGestureRecognizer) { 
     print("swiped up") 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 100 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = UITableViewCell() 
    cell.textLabel?.text = "cell\(indexPath.row)" 
    return cell 
} 
} 

回答

6

实现UIGestureRecognizerDelegate。 2.设置委托。

yourGesture.delegate = self 

在各自的快捷文件添加的功能。

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return true 
} 
+0

工作!,但为什么我应该实现3号 –

+1

,因为在你的tableview它与滚动视图,你正在实施刷卡,所以有两个手势:)然而,如果它是有用的,那么我希望你也会接受我的答案。 :) –

+0

绝对,只需编辑你的答案,并使编号#3的代码更合适! –

2

实现委托方法

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 

这种方法将允许表视图的移动手势和你的滑动手势可以同时承认

0

您需要添加以下代表在相应视图控制器。

目标C

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
    return YES; 
} 

夫特

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return true 
    } 

说明

这种方法被称为当由任一gestureRecognizer或otherGestureRecognizer识别手势的会遮挡其他手势识别器识别其手势。请注意,返回YES可保证同时识别;另一方面,返回“否”并不能保证防止同时识别,因为另一个手势识别器的代表可以是return YES。默认情况下,它返回false