1

特定のフレーム、この場合はボタンの領域に入る- (void) touchesMovedときはいつでも何かをするために使用しています。

私の問題は、フレーム内で指を動かしているときではなく、フレームに入ったときにだけ何かをしたいということです。

フレーム内にいるときにメソッドを1回だけ呼び出す方法を知っている人はいますか?同じtouchMoveに再入力すると、もう一度呼び出すことができます。

ありがとうございました。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event touchesForView:self.view] anyObject];

    CGPoint location = [touch locationInView:touch.view];

    if(CGRectContainsPoint(p1.frame, location))
    {
            //I only want the below to me called 
            // once while I am inside this frame
        [self pP01];
        [p1 setHighlighted:YES];
    }else {
        [p1 setHighlighted:NO];
    }
}
4

4 に答える 4

1

特定の領域に入ったときにコードが既に呼び出されているかどうかを確認するために、いくつかの属性を使用できます。オブジェクトの強調表示された状態のように見えp1ます(それが何であるかはわかりません)がそれに適している可能性があります:

if(CGRectContainsPoint(p1.frame, location))
{
   if (!p1.isHighlighted){ // We entered the area but have not run highlighting code yet
        //I only want the below to me called 
        // once while I am inside this frame
      [self pP01];
      [p1 setHighlighted:YES];
   }
}else { // We left the area - so we'll call highlighting code when we enter next time
    [p1 setHighlighted:NO];
}
于 2010-02-10T08:22:04.253 に答える
1

Simply add a BOOLtouchesMoved でチェックして、touchesEnded でリセットする

于 2010-02-10T09:03:59.940 に答える
1
if( CGRectContainsPoint([p1 frame],[touch locationInView:self.view])) {
   NSLog (@"Touch Moved over p1");
  if (!p14.isHighlighted) {
   [self action: p1];
   p1.highlighted = YES; 
   }
  }else {
   p1.highlighted = NO;
  }
于 2010-08-19T16:49:36.423 に答える
0

UIButton を使用してみて、Interface Builder で「タッチ ドラッグ エンター」接続を使用してください。

于 2011-07-01T23:13:13.757 に答える