目标C:在UIScrollView上使用Fingers绘图

时间:2012-02-16 11:45:02

标签: objective-c ios uiscrollview

我正在尝试制作草图垫应用程序。

我使用UIScrollView进行分页,使用UIImageView进行绘图。

我将UIImageView放在scrollView的顶部,但它没有添加到UIScrollView,所以它不会滚动。

现在问题......

这不是写作......

[scrollView setScrollEnable:YES];
[scrollView setUserInteractionEnabled:YES];

我需要使用一个按钮将其设置为NO

有没有一种方法可以在不使用任何按钮的情况下同时滚动和书写?

1 个答案:

答案 0 :(得分:3)

这绝对不是构建此类应用程序的正确方法。

UIScrollView用于滚动内容而非绘图。而且您也不需要UIImageView来绘制内容,只需一个简单的UIView即可。

在这里,你最好的选择是创建一个UIScrollView并禁用它的滚动,因为你将用两个手指处理它,而绘图将被处理另一个手势识别器。

UIPanGestureRecognizer *twoFingerScrolling  = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onTwoFingerScroll:)] autorelease];
[twoFingerScrolling setMinimumNumberOfTouches:2];
[twoFingerScrolling setMaximumNumberOfTouches:2]; 
UIPanGestureRecognizer *oneFingerDraw   = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onOneFingerDraw:)] autorelease];
[oneFingerDraw setMinimumNumberOfTouches:1];
[oneFingerDraw setMaximumNumberOfTouches:1];

[yourScollView addGestureRecognizer:twoFingerScrolling];
[yourScollView addGestureRecognizer:oneFingerDraw];

稍后在您的代码中,您可以轻松处理两个事件,即滚动:

- (void)onTwoFingerScroll:(UIPanGestureRecognizer*)sender
{
   // Calculate the content offset from the shifting that occured
   //[yourScrollView setContentOffset:theContentOffset]
}

图纸(可由Quartz Tookit完成)

- (void)onOneFingerDraw:(UIPanGestureRecognizer*)sender
    {
       // Processing the drawing by using comparing:
       if (sender.state == UIGestureRecognizerStateBegan) 
         { /* drawing began */ }
       else if (iRecognizer.state == UIGestureRecognizerStateChanged)
         { /* drawing occured */ }
       else if (iRecognizer.state == UIGestureRecognizerStateEnded) 
         { /* drawing ended /* }
    }

希望这有帮助。