所以我正在尝试创建一个根据您滑动的方向更改标签的应用。但是,我不想在屏幕上的任何位置滑动,而是只想在特定视图上滑动。我在.xib文件上添加了一个新视图,并将该视图用于触摸的位置,并将其命名为leftView,但它仍然使用整个屏幕。我正在使用touchesBegan和touchesMoved方法,所以我可以使用对角线。 这是我正在使用的一些代码:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
gestureStartPoint = [touch locationInView:leftView];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:leftView];
CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x);
CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y);
if ((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x < gestureStartPoint.x){
label.text = @"Left Horizontal swipe detected";
}
else if((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x > gestureStartPoint.x){
label.text = @"Right Horizontal swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y < gestureStartPoint.y){
label.text = @"Up Vertical swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y > gestureStartPoint.y){
label.text = @"Down Vertical swipe detected";
}
答案 0 :(得分:2)
您可以通过向要接收滑动的UIGestureRecognizer
添加两个UIView
s(一个用于右滑动,另一个用于左滑动)来实现您的目的。
Apple的SimpleGestureRecognizer sample project很好地说明了如何设置它。
答案 1 :(得分:0)
检查身份检查器是否为管理器中的UIView对象选择了uiview类。我想你已经在UIView的子类中实现了touchesBegan方法。