Слушатель событий для позиции UIImageView - PullRequest
0 голосов
/ 03 июля 2011

Как бы я мог вызывать метод в соответствии с координатой y представления UIImage?Чтобы быть более конкретным, у меня есть перетаскиваемый UIImageView.Если его координата y больше определенного значения, я хочу, чтобы цвет экрана изменился.

код для перетаскивания:

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [[event allTouches] anyObject];

 if([touch view] == toggle)

 {



    CGPoint location = [touch locationInView:self.view];
    CGPoint newLocation = CGPointMake(toggle.center.x, location.y);

    toggle.center = newLocation;
    NSLog(@"%f \n",toggle.center.y);

}  

}

1 Ответ

0 голосов
/ 12 октября 2013

Я мог бы придумать два способа сделать это. Сначала Наблюдение значения ключа через следующее:

[self.toggle addObserver: inspector
              forKeyPath: @"frame"
                 options: NSKeyValueObservingOptionNew
                 context: NULL];

Я не уверен, что свойство frame совместимо с Key-Value Coding.

Или, и это то, что я бы порекомендовал, вы можете:

(1) Создайте протокол [Prefix] ToggleViewLocationDelegate и добавьте свойство locationDelegate в свой контроллер представления / представления, например:

// YourViewOrViewControllerClass.h
// ...


@class YourViewOrViewControllerClass

@protocol [Prefix]ToggleViewLocationDelegate

- (void) toggleViewDidChangeFrame: (UIView*) toggleView;

@end

@class YourViewOrViewControllerClass

@property (nonatomic, assign) id<[Prefix]ToggleViewLocationDelegate> locationDelegate;
...

@end

(2) Обеспечение заинтересованности класса в изменении координат в соответствии с протоколом, и (3) В методе touchesMoved:withEvent: сообщите locationDelegate следующим образом:

- (void) touchesMoved: (NSSet*)   touches
            withEvent: (UIEvent*) event
{
  UITouch* touch = [touches anyObject];
  if (touch.view == toggle)
  {
    /* Fetch the new touch location */
    CGPoint location = [touch locationInView: self.view];

    /* Set the toggle's location */
    CGPoint newLocation = CGPointMake(toggle.center.x, location.y);
    toggle.center = newLocation;

    /* Inform the delegate when applicable */
    if (self.locationDelegate != nil)
    {
      [self.locationDelegate toggleViewDidChangeFrame: toggle];
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...