我尝试使用UISwipeGestureRecognizer
来检测UIView
中的垂直方向
我的视图大小为{0,0,1024,1536
},这意味着高度是全屏高度的两倍,也表示视图的一半在屏幕上并且有一半的视图在屏幕外。
我的目的是在检测到-768
时将视图框架向下移动到{0,UISwipeGestureRecognizerDirectionDown
,1024,1536},然后将视图移动到{0,0,1024,1536 }当检测到UISwipeGestureRecognizerDirectionUp
时。
请参考图表
问题
最初视图的帧是{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
{
//...
}
答案 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>