Birthday Reminder - поздравим друзей вовремя Уроки iPhone SDK: Переход с исчезновением изображения
Июн 03

Касания обрабатываются тремя методами:

  • touchesBegan:
  • touchesMoved:
  • touchesEnded:

Чтобы получить доступ к касаниям, нужно включить в код три этих метода (или один–два). Сам код не представляет собой ничего сложного:

1
2
3
4
5
6
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
}

Метод “touchesBegan:” будет вызываться при касании пользователем экрана одним пальцем. Каждый раз декларируется новый метод: для второго пальца, уха, носа, ноги…
Метод “touchesEnded:” будет вызываться по окончании касания.
А вот с методом “touchesMoved:” все не так просто, как может показаться на первый взгляд. Данный метод действительно вызывается при перемещении касающегося экрана пальца, но на реальном устройстве это происходит практически сразу же после “touchesBegan“. Почему? На симуляторе iPhone роль пальца играет мышь: нажимаете/отпускаете кнопку мыши (сенсорную панель) — вызываются методы “touchesBegan” и “touchesEnded“, но не “touchesMoved” (если указатель мыши не смещался). При касании экрана iPhone / iPod в 99% случаев координаты начала и конца касания не совпадают, поэтому вызывается еще и метод “touchesMoved“.
Координаты касания получить совсем несложно: достаточно к любому из трех перечисленных выше методов добавить следующий код:

1
2
UITouch *touch = [touches anyObject];
CGPoint touchCoordinates = [touch locationInView:self.view];

touchCoordinates.x” и “touchCoordinates.y” дадут всю нужную информацию.

Если интересует не только одинарное касание (например, когда касаться экрана можно несколькими пальцами), поможет представленный ниже фрагмент:

1
2
3
4
5
NSSet *allTouches = [event allTouches];
UITouch *singleTouch;
for (int i = 0; i < [allTouches count]; i++) {
singleTouch = [[allTouches allObjects] objectAtIndex:i];
// здесь любой код

Чтобы просто узнать, сколько пальцев коснулось экрана, воспользуйтесь методом “[allTouches count];” и первой строкой из примера выше.

Если двойной щелчок по экрану должен вызывать какое-то действие, обратите внимание на представленный ниже фрагмент:

1
2
if ([touch tapCount] == 2) {
// здесь любой код

Метод “tapCount” подходит исключительно для одного касания. При многочисленных касаниях щелчки не подсчитываются.

Перейдем к более интересным темам. Как узнать, что пользователь коснулся объекта — изображения, метки…? Прежде чем в редакторе Interface Builder добавить код к атрибутам, не забудьте установить флажок “User Interaction Enabled” (а при необходимости и “Multiple Touches“). В представлениях взаимодействие с пользователем активировано по умолчанию. Того же результата можно добиться и через XCode:

1
2
myObject.userInteractionEnabled = YES;
myObject.multipleTouchEnabled = YES;

После активации опции “User Interaction” для выполнения задач можно пользоваться оператором “if“.

1
2
3
if ([touch view] == myObject) {
// здесь любой код
}

touchessimulator

Думаю, это все, что нужно знать о касаниях. При желании можно загрузить подготовленный мной проект. В нем есть вся информация о том:

  • где начинается касание (x,y);
  • где перемещается касание (x,y);
  • где заканчивается касание (x,y);
  • сколько пальцев коснулось экрана;
  • сколько произведено щелчков;
  • а также квадрат Move Me, перемещающийся вместе с пальцем.

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...

One Ping to “Уроки iPhone SDK: Использования возможностей сенсорного экрана - Виды касаний”

  1. Уроки iPhone SDK: Основы работы с Dashcode: анимация и интерактивность | LookApp.ru - обзоры программ и игр для iPhone Says:

    [...] Подробнее о событиях касания можно прочесть тут. [...]


2 Responses to “Уроки iPhone SDK: Использования возможностей сенсорного экрана - Виды касаний”

  1. 1. ARtt Says:

    в инете нет нигде лучшего по iphone !!!! +5 ОТЛИЧНО !! жду еще ))

  2. 2. NIkita Says:

    Спасибо за статью!
    Можно ли использовать данный метод для смены View при “пролистывании” текста вбок? (например как в приложении айЧиталка) или же для этого существует другой какой-то метод?

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