检测在手势识别器对象区域之外开始的滑动
Posted
技术标签:
【中文标题】检测在手势识别器对象区域之外开始的滑动【英文标题】:Detecting a swipe that started outside of Gesture Recognizer object's area 【发布时间】:2013-05-19 14:38:07 【问题描述】:我正在尝试以一种非常具体的方式检测滑动,但结果好坏参半。我的第一个问题是仅在屏幕的某个区域识别滑动,现在已解决。我目前的问题是:假设我的视图中有一个事物列,并且我使该列的尺寸对应于我的手势识别器。使用该应用程序时,滑动必须在这些维度内开始,才能被识别为滑动。相反,即使用户开始在列区域之外滑动,我也需要识别滑动。事实上,我什至不在乎它是否是滑动,即使是点击或其他什么都可以,我只想知道用户的手指是否曾经在该列中(在这种情况下,他们肯定会从列区域之外)。
这是我当前的代码,其中的单词,但滑动必须在列内开始:
- (IBAction)swiperMethod:(UISwipeGestureRecognizer *)sender
CGPoint point = [sender locationInView:self.view];
if(point.y < 316 && point.y > 76 && point.x < 234 && point.x > 164)
_sampleText.text=@"hi";
- (void)viewDidLoad
[super viewDidLoad];
UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swiperMethod:)];
[leftRecognizer setDirection: UISwipeGestureRecognizerDirectionLeft];
[[self view] addGestureRecognizer:leftRecognizer];
// Do any additional setup after loading the view, typically from a nib.
是否有人可以告诉我如何识别滑动(或任何手势,我不关心它是否特别是滑动)即使用户只是将他/她的手指拖过该区域?
谢谢!
【问题讨论】:
没人有什么想法吗?还是我的问题不准确? 【参考方案1】:这个方法有效!
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
UITouch * touch = [[event allTouches] anyObject];
CGPoint point = [touch locationInView:touch.view];
if(point.y < 316 && point.y > 76 && point.x < 234 && point.x > 164)
_sample.image = [UIImage imageNamed:@"normal.png"];
else
_star.image = [UIImage imageNamed:@"alternate.png"];
【讨论】:
嘿 jake9115!快速提问,如果用户也从屏幕上开始触摸,这是否有效?我有一个隐藏菜单,我想从右侧拉入,通常触摸会在屏幕外开始...以上是关于检测在手势识别器对象区域之外开始的滑动的主要内容,如果未能解决你的问题,请参考以下文章