为什么UISwipeGestureRecognizer没有响应?

时间:2014-04-28 00:20:37

标签: ios7 uiview uiswipegesturerecognizer

我尝试使用UISwipeGestureRecognizer来检测UIView中的垂直方向 我的视图大小为{0,0,1024,1536},这意味着高度是全屏高度的两倍,也表示视图的一半在屏幕上并且有一半的视图在屏幕外。 我的目的是在检测到-768时将视图框架向下移动到{0,UISwipeGestureRecognizerDirectionDown,1024,1536},然后将视图移动到{0,0,1024,1536 }当检测到UISwipeGestureRecognizerDirectionUp时。

请参考图表 enter image description here 问题
最初视图的帧是{0,0,1024,1536},当检测到UISwipeGestureRecognizerDirectionDown并且屏幕外部分向上移动时,我得到了响应。 之后,当我在屏幕上滑动时,我没有得到任何回应。

我知道如何解决这个问题? 我尝试了很多方法,但没有解决我的问题。 问题可能是由屏幕外部分引起的。

更新 首先,我尝试使用UIScrollView来实现,但失败了。 问题是滚动视图的垂直检测不是很准确,总是误导我 向上/向下移动视图。

我希望不要逐渐移动视图。

因此我放弃了UIScrollView。


我的代码

-(void)viewDidLoad {
   // ...
   UISwipeGestureRecognizer * upSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(toggleUpSwipe:)];
   [upSwipe setDirection:UISwipeGestureRecognizerDirectionUp];
   [self.view addGestureRecognizer:upSwipe];

   UISwipeGestureRecognizer * downSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(toggleDownSwipe:)];
   [downSwipe setDirection:UISwipeGestureRecognizerDirectionDown];
   [self.view addGestureRecognizer:downSwipe];
   //...
}

- (void)toggleUpSwipe:(UISwipeGestureRecognizer*)swipeGesture
{
    //...
}

- (void)toggleDownSwipe:(UISwipeGestureRecognizer*)swipeGesture
{
   //...
}

2 个答案:

答案 0 :(得分:0)

尝试使用UIscrollview而不是在viewcontroller上使用手势。 在使用UIscrollview时,您可以根据需要提供任何大小的内容大小,也可以在不使用手势识别器的情况下实现上下滚动。

答案 1 :(得分:0)

使用此

UISwipeGestureRecognizer *swipeLeft =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft:)];
swipeLeft.direction =UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeLeft];

UISwipeGestureRecognizer *swipeRight =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeRight:)];
swipeRight.direction =UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRight];

另外

 -(IBAction)swipeLeft:(id)sender
{
            //...
}
-(IBAction)swipeRight:(id)sender
{
       //...
}

还在.h

上添加<UISwipreGestureDelegate>