1

UIView をサブクラス化しましたが、最初はビューがデフォルトの色になり、タッチ時に別の色を塗りつぶす必要があります (x 軸 = 0 からユーザーがタッチしたポイントまで)。それらのポイントを取得しているビューの境界、それを自分のビューの境界のみに制限する方法。

私はググって以下のスニペットを試しましたが、うまくいきませんでした

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 に答える