1

我已经将 UIView 子类化了,最初我的视图将采用默认颜色,我需要在触摸时填充一些不同的颜色(从 x 轴 = 0 到用户触摸点),这里的问题是 touchesMoved 即使我拖出我自己查看边界它正在获得这些点,如何将其限制为仅用于我的自身查看边界。

我用谷歌搜索并尝试了下面的片段,但没有运气

if([self pointInside:point withEvent:nil]){
    [self fillColor];
}

我的touchesMoved方法如下,

 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch = [touches anyObject];
        CGPoint point = [touch locationInView:self];
        endPoint = point;
        NSLog(@"moved x: %f,y: %f",point.x,point.y);
        if(CGRectContainsPoint([self frame], endPoint)){ // this also not working
            [self fillColor];
        }
    }

提前感谢任何帮助。

4

2 回答 2

0

在您的 touchesMoved 方法 中,CGPoint point = [touch locationInView:self]; 通过您希望在其中进行触摸的视图来复制 self。

self 将获得完整的视图,您应该在那里传递您的 drawingView,以便它仅检测该视图上的触摸。

于 2012-12-14T09:56:51.787 回答
0

只需在方法中设置标签viewDidLoad:并使用以下逻辑..

fillColorView.tag = 111;

并在如下方法中使用波纹管逻辑touchesMoved:..

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{  
    UITouch *tap = [touches anyObject];
    CGPoint pointToMove = [tap locationInView:fillColorView];
     if([tap.view isKindOfClass:[UIView class]]) 
    {
        UIView *tempView=(UIView *) tap.view;
        if (tempView.tag == 111){
              [self fillColor];
        }
    }
}

希望这可以帮助你...

于 2012-12-14T10:03:31.260 回答