вторник, 8 сентября 2015 г.

22. Drag and Drop

Ссылка на видео урок.

В этом уроке рассказывается как работать с UITouch  - касания пользователя экрана.

Класс UIResponder - родитель UIView  имеет методы для обработки прикосновений экрана:

Начало касания
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
Движение не отрывая пальца по экрану
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
Окончание касания.
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;

Касание прервано событием или выдвижением панели на экране.
- (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;

Чтобы приложение поддерживало множественные касания (двумя и более пальцами), необходимо выполнить:

self.view.multipleTouchEnabled=YES;

Чтобы распечатать все точки касания в координатах главной Вью в этом уроке использован такой пример:
-(void) logTouches:(NSSet*) touches withMethod : (NSString*) methodName{
    NSMutableString *string=[NSMutableString stringWithString:methodName];
    for (UITouch * touch in touches){
        CGPoint point=[touch locationInView:self.view];
        [string appendFormat:@" %@",NSStringFromCGPoint(point)];
        
    }
    NSLog(@"%@",string);
    
}
Метод  locationInView переводит UITouch  в CGPoint в координатах self.view.
Так же рассматривается метод hitTest позволяющий вернуть UIView самой глубокой вложенности  (в массивах subview) на которую указывает точка :

UIView * view=[self.view hitTest:pointOnMainView withEvent:event];

 Исходники к уроку 22.

 Домашнее задание к уроку 22:

Уровень супермен (остальных уровней не будет)

1. Создайте шахматное поле (8х8), используйте черные сабвьюхи
2. Добавьте балые и красные шашки на черные клетки (используйте начальное расположение в шашках)
3. Реализуйте механизм драг'н'дроп подобно тому, что я сделал в примере, но с условиями:
4. Шашки должны ставать в центр черных клеток.
5. Даже если я отпустил шашку над центром белой клетки - она должна переместиться в центр ближайшей к отпусканию черной клетки.
6. Шашки не могут становиться друг на друга
7. Шашки не могут быть поставлены за пределы поля.

Выполнил домашнее задание к уроку 22:
Исходные коды к домашнему заданию 22.


Комментариев нет:

Отправить комментарий