从 UISwipeGestureRecognizer 和 UIScrollView 接收用户输入
Receive user input from UISwipeGestureRecognizer and UIScrollView
我正在尝试创建一个 UIScrollView,它对 scrollViewWillBeginDragging 执行操作,并且还使用 UISwipeGestureRecognizer 识别左右滑动。当我使用 scrollViewWillBeginDragging 函数时,我在向左滑动时得到了想要的结果,但我的函数无法判断我是在向右滑动还是向左滑动。如果我设置 detailScrollView.userInteractionEnabled = false,gestureRecognizer 会正确执行,但视图不再滚动。这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
leftSwipe.direction = .Left
rightSwipe.direction = .Right
view.addGestureRecognizer(leftSwipe)
view.addGestureRecognizer(rightSwipe) }
func gestureRecognizer(UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool {
return true
}
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
if (counter < buttons.count) {
serialSelected(buttons[counter])
counter += 1
}
}
func handleSwipes(sender:UISwipeGestureRecognizer) {
if (sender.direction == .Left) {
println("Swipe Left")
var labelPosition = CGPointMake(self.contentView.frame.origin.x - 50.0, self.contentView.frame.origin.y);
contentView.frame = CGRectMake( labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height)
}
if (sender.direction == .Right) {
println("Swipe Right")
var labelPosition = CGPointMake(self.contentView.frame.origin.x + 50.0, self.contentView.frame.origin.y);
contentView.frame = CGRectMake( labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height)
}
}
根据您的源代码,shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer
从未被调用。
// Make yourself a delegate
class yourClass: parentClass, UIGestureRecognizerDelegate
// reference the delegate
leftSwipe.delegate = self
rightSwipe.delegate = self
我正在尝试创建一个 UIScrollView,它对 scrollViewWillBeginDragging 执行操作,并且还使用 UISwipeGestureRecognizer 识别左右滑动。当我使用 scrollViewWillBeginDragging 函数时,我在向左滑动时得到了想要的结果,但我的函数无法判断我是在向右滑动还是向左滑动。如果我设置 detailScrollView.userInteractionEnabled = false,gestureRecognizer 会正确执行,但视图不再滚动。这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
leftSwipe.direction = .Left
rightSwipe.direction = .Right
view.addGestureRecognizer(leftSwipe)
view.addGestureRecognizer(rightSwipe) }
func gestureRecognizer(UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool {
return true
}
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
if (counter < buttons.count) {
serialSelected(buttons[counter])
counter += 1
}
}
func handleSwipes(sender:UISwipeGestureRecognizer) {
if (sender.direction == .Left) {
println("Swipe Left")
var labelPosition = CGPointMake(self.contentView.frame.origin.x - 50.0, self.contentView.frame.origin.y);
contentView.frame = CGRectMake( labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height)
}
if (sender.direction == .Right) {
println("Swipe Right")
var labelPosition = CGPointMake(self.contentView.frame.origin.x + 50.0, self.contentView.frame.origin.y);
contentView.frame = CGRectMake( labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height)
}
}
根据您的源代码,shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer
从未被调用。
// Make yourself a delegate
class yourClass: parentClass, UIGestureRecognizerDelegate
// reference the delegate
leftSwipe.delegate = self
rightSwipe.delegate = self