【问题标题】:Objective C: Drawing with Fingers on UIScrollView目标 C:在 UIScrollView 上用手指绘图
【发布时间】:2015-03-24 19:50:09
【问题描述】:

我正在尝试制作一个画板应用程序。

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

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

现在的问题...

不写的时候...

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

我需要使用一个按钮将其设置为NO,以便它写入,

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

【问题讨论】:

  • 您可以重新考虑一下交互性:构建您自己的滚动组件,使用两指滑动/触摸而不是一根手指进行滚动/平移,并让一根手指触摸用于绘图。跨度>

标签: objective-c ios uiscrollview


【解决方案1】:

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

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 /* }
    }

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多