touchesMoved伸出我的视野范围

时间:2012-12-14 09:53:02

标签: iphone objective-c ios cocoa-touch touchesmoved

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

我用google搜索&尝试下面的片段,但没有运气

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];
        }
    }

提前感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在touchesMoved方法中,CGPoint point = [touch locationInView:self];会在您希望触摸工作的视图中自我复制。

self将获得完整的视图,你应该在那里传递你的drawingView,这样它只会在那个视图上发出触摸。

答案 1 :(得分: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];
        }
    }
}

希望这能帮到你......