Как вызвать метод только один раз во время - (void) touchMoved? - PullRequest
1 голос
/ 10 февраля 2010

Я использую - (void) touchesMoved, чтобы делать что-либо, когда я ввожу определенный кадр, в данном случае область кнопки.

Моя проблема в том, что я хочу, чтобы он делал что-то, когда я вхожу в кадр, - , а не , когда я перемещаю палец в рамке.

Кто-нибудь знает, как я могу вызывать свои методы только один раз, пока я нахожусь внутри фрейма, и все еще позволяет мне вызывать его еще раз, если я повторно ввожу его в том же 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 ]

1 голос
/ 10 февраля 2010

Simply add a BOOL что вы проверяете в касанияхПеремещено и сбрасывается в касанияхЗакругленное

1 голос
/ 19 августа 2010
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;
  }
1 голос
/ 10 февраля 2010

Вы можете использовать некоторый атрибут, чтобы проверить, был ли код уже вызван, когда вы входили в определенную область. Похоже, что выделенное состояние объекта 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];
}
0 голосов
/ 02 июля 2011

попробуйте использовать UIButton и использовать подключение с помощью сенсорного ввода в Интерфейсном Разработчике.

...