IOS:检测UIView特定位置的滑动手势

3
我正在创建一个故事板应用程序,用户执行滑动手势时视图会改变。 我遇到的问题是,当您从“main.storyboard”文件中将手势识别器拖放到视图上时,手势将从UIView的任何位置识别。 基本上,我需要识别在屏幕上特定区域执行的手势,类似于您如何在IOS 6中向下拖动通知中心。 如果这不清楚或需要更多细节,请随时询问。
感谢您提前的任何帮助!
5个回答

9

我不确定这是否能帮到你或者你已经尝试过这种方法,但是我想分享一下我的想法。

你可以在你的ViewControl.m文件中使用UISwipeGestureRecognizer,代码如下:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeToDoMethod)];
[swipeGesture setDirection:UISwipeGestureRecognizerDirectionRight];
[[self innerView] addGestureRecognizer: swipeGesture];

你可以在主视图中添加一个内部视图,并将此手势添加到该视图中。
希望这能帮到你,祝你好运! :)

谢谢您的回答!这似乎是个好主意,但在这段代码中内部视图设置的位置在哪里?另外,在滑动执行后,我如何使用storyboards切换我的主视图。感谢您的进一步帮助。 - s0mbieZ
我提到了内部视图是您的特定区域。因此,您需要将一个新的UIView添加到您的主视图中。我能理解您的第二个问题。如果你的意思是说你想在内部视图中滑动手势后切换主视图,我可以建议两件事情。一种方法是您的内部视图是您视图的一部分,因此您不需要切换任何视图。或者,如果您将此应用于另一个视图,则应编写一个我称之为“swipeToDoMethod”的方法,在上面的代码中调用它。您应该使用以下方式设置视图的可见性: [someView setHidden:YES]; [anotherView setHidden:NO]; 希望这些都是清晰的答案 ;) - Berkin Sansal

1
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeView)];
[swipe setDirection:UISwipeGestureRecognizerDirectionLeft];
[[self innerView] addGestureRecognizer: swipe];

//UISwipeGestureRecognizerDirectionRight(或)向上(或)向下


0

使用另一个可见度为0的UIView,将其放置在您想要识别手势的区域,然后将手势添加到此UIView中。

这只是一个想法。

希望这能帮到您。


0
您可以将子视图添加到您的视图中,将子视图的框架设置为您想要捕捉滑动手势的区域,向其添加识别器,并将其背景颜色设置为透明色。希望这有所帮助。

0

添加 Swift 版本:

//Add gesture recognizer
let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(dismissShowMessageAndButtonDueToSwipeUp))
swipeGesture.direction = .up
backgroundView.addGestureRecognizer(swipeGesture)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接