0

看起来这应该很简单,但显然并非如此。

我正在使用 Storyboard,我的第一个视图控制器定义为LogbookFirstViewController.

此控制器的内容位于UIControl. 这样我就可以检测到水龙头。

但是,我看不到确定用户何时开始在屏幕上滑动的简单方法。我想要做的就是触摸 x 坐标。基本上跟踪它。

我掉了一个UIPanGestureRecognizerinside LogbookFirstViewController,并附上了它的出口:

.h

@property (assign) IBOutlet UIGestureRecognizer *gestureRecognizer;

当然,我然后合成它并设置委托:

.m

[gestureRecognizer setDelegate:self];

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    UITouch *touchLoc = [touches anyObject];
    CGPoint beginCenter = self.view.center;
    CGPoint touchPoint = [touchLoc locationInView:self.view];

    deltaX = touchPoint.x - beginCenter.x;
    deltaY = touchPoint.y - beginCenter.y;
    NSLog(@"X = %f & Y = %f", deltaX, deltaY);
}

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch * touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];

    // Set the correct center when touched
    touchPoint.x -= deltaX;
    touchPoint.y -= deltaY;

    self.view.center = touchPoint;
}

但是,这无济于事。它甚至检测不到-(void)touchesBegan

我错过了什么?先谢谢了。

4

1 回答 1

2

这些方法不是委托方法,它们仅用于子类化UIGestureRecognizer

通常,您实例化一个手势识别器并指定一个选择器(一种方法)以在识别该手势时调用,然后将其分配给一个视图,例如:

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self.view addGestureRecognizer:pan]

然后在您的pan方法中,您可以从手势中查询信息:

- (void)pan:(UIPanGestureRecognizer *)gesture
{
    // get information from the gesture object
}

我从来没有用 StoryBoard 做过,但我想如果你的视图控制器中已经有一个属性,你可以调用addTarget:action:它并将它附加到视图控制器viewDidLoad方法中的视图。

于 2013-01-23T02:42:30.080 回答