четверг, 7 ноября 2013 г.

Программирование iPhone 5 - обработка касаний

Обработка касаний

(c) Nikita Kultin, 2013.

В зависимости от задачи для обработки касания можно использовать UITapGestureRecognizer, UIPanGestureRecognizer и др.
UITapGesture Recognizer позволяет обработать простое касание одним или несколькими пальцами,
UIPanGestureRecognizer - сделать обработку движения, например вида "нажать-переместить-отпустить".  


Пример: обработка перемещения пальца на ImageView


0. Установить в выбранное состояние флажок User Interaction Enabled компонента imageView1  

1. Объявить в контроллере

CGPoint startPoint;
CGPoint endPoint;

2. Поместиь в контроллер объявление обработчика

// обработчик для imageView1
- (void)handleSinglePan:(UITapGestureRecognizer *)recognizer {
    
    
    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        // запомнить точку касания
        startPoint = [recognizer locationInView:self.view];
        endPoint = startPoint;
    }
    
    
    if (recognizer.state == UIGestureRecognizerStateChanged)
    {
        NSLog(@"Changed");
    }
    
    
    if (recognizer.state == UIGestureRecognizerStateEnded)
    {
        
        endPoint = [recognizer locationInView:self.view];
        float dx = endPoint.x - startPoint.x;
        float dy = endPoint.y - startPoint.y;
        //NSLog(@"%@ %f %f",recognizer.description, dx, dy);
        if (dx > 0)
        {
            NSLog(@"NEXT");
        }
        else
        {
            NSLog(@"PREV");
        }
        
    }
    
}


3, Задать обработчик для ImageView

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

 
    // создать обработчик Pan-касания
    UIPanGestureRecognizer *singleFingerPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action@selector(handleSinglePan:)];
   
    // задать обработчик для объекта
    [imageView1 addGestureRecognizer:singleFingerPan]; // ВНИМАНИЕ! Установить флажок User Interaction Enabled
  

}