Ios 检测';向上';UIScrollView中的UI手势
我在我的应用程序中有一个自定义的segue连接到一个按钮,当点击按钮时,它会将我的视图向下滚动到另一个视图。我需要实现segue的展开,并希望在用户在第二个视图的Ios 检测';向上';UIScrollView中的UI手势,ios,swift,uiscrollview,uigesturerecognizer,Ios,Swift,Uiscrollview,Uigesturerecognizer,我在我的应用程序中有一个自定义的segue连接到一个按钮,当点击按钮时,它会将我的视图向下滚动到另一个视图。我需要实现segue的展开,并希望在用户在第二个视图的UIScrollView顶部向上滑动时发生 这是我的segue代码: override func perform() { var MainVCView = self.sourceViewController.view as UIView! var CreditVCView = self.destinationViewC
UIScrollView
顶部向上滑动时发生
这是我的segue代码:
override func perform() {
var MainVCView = self.sourceViewController.view as UIView!
var CreditVCView = self.destinationViewController.view as UIView!
let screenWidth = UIScreen.mainScreen().bounds.size.width
let screenHeight = UIScreen.mainScreen().bounds.size.height
CreditVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(CreditVCView, aboveSubview: MainVCView)
// Transition.
UIView.animateWithDuration(1.0, animations: { () -> Void in
MainVCView.frame = CGRectOffset(MainVCView.frame, 0.0, -screenHeight)
CreditVCView.frame = CGRectOffset(CreditVCView.frame, 0.0, -screenHeight)
}) { (Finished) -> Void in
self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)
}
}
我已经实现了手势识别器,但是当它设置为“向上”或“向下”时,我无法让它检测到刷卡。它仅在设置为“左”或“右”时工作
代码如下:
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let unwindSwipe = UISwipeGestureRecognizer(target: self, action: "unwind")
unwindSwipe.direction = UISwipeGestureRecognizerDirection.Down
view.addGestureRecognizer(unwindSwipe)
view.userInteractionEnabled = true
scrollView.canCancelContentTouches = true
// Do any additional setup after loading the view.
}
func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool {
return true
}
func unwind() {
println("Test")
}
正如你所看到的,我尝试了一些方法,但我就是无法让它检测到这个手势
有什么想法吗?在屏幕上添加滑动手势
override func viewDidLoad() {
super.viewDidLoad()
var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
var swipeup = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeup.direction = UISwipeGestureRecognizerDirection.up
self.view.addGestureRecognizer(swipeup)
}
func respondToSwipeGesture(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.Right:
println("Swiped right")
case UISwipeGestureRecognizerDirection.up:
println("Swiped up")
default:
break
}
}
}
并添加一条线来处理碰撞
scrollView.PangestureRecognitizer.RequiremegestureRecognitizerToFail(swipeGesture)我看到您的代码中有一个scrollView,您是否试图使手势被识别以在其上工作?因为它将“仍然”滚动视图的动作是的,我正在尝试这样做,一旦用户滚动到滚动视图的顶部,他们可以再次向上滑动,它将切换回另一个视图。你需要实现一个为什么来监视滚动视图的位置,当它到达顶部时,你可以切换到另一个视图。另一个想法是截取手势,如果速度大于某个值,则执行segue,并滚动其较小值的视图。