Сенсорные экраны стали основой современного взаимодействия смартфона с пользователем. В этом руководстве вы узнаете, как получать уведомления, когда пользователь взаимодействует с сенсорным экраном, и как использовать сенсорные события на практике.
IOS SDK предоставляет обширную библиотеку элементов управления, которые помогут вам приступить к созданию пользовательского интерфейса без необходимости работать с отдельными штрихами. Иногда эти элементы управления могут не реализовывать функции, которые вы ищете, и вам может потребоваться обрабатывать сенсорные события самостоятельно.
Используя инфраструктуру UIKit, вы можете получить доступ к сенсорным событиям в двух классах, UIView
и UIViewController
, оба из которых являются подклассом, UIResponder
который реализует сенсорные события.
Используя четыре метода UIResponder
, вы можете реализовать свой собственный код для сенсорных событий. Эти четыре метода:
-
touchesBegan:withEvent:
— отправляется при касании пальцами. -
touchesEnded:withEvent:
— Отправляется, когда пальцыtouchesEnded:withEvent:
. -
touchesMoved:withEvent:
— отправляется, когда пальцы двигаются на сенсорном экране. -
touchesCancelled:withEvent:
— Отправляется, когда касание было прервано событием, таким как телефонный звонок.
Обнаружение прикосновений Учебник
Теперь давайте создадим простую демонстрацию этих сенсорных событий. Создайте новый проект XCode. Выберите «Просмотреть приложение», нажмите «Далее» и введите свой идентификатор компании, а «Уступки» в качестве названия проекта.
В TouchesViewController.m импортируйте Quartz Core, добавив следующую строку:
1
|
#import <QuartzCore/QuartzCore.h>
|
Нам понадобится Quartz Core, чтобы на экране появлялись круги.
Теперь в том же файле замените метод viewDidLoad
следующим:
1
2
3
4
5
|
— (void)viewDidLoad
{
[super viewDidLoad];
[self.view setMultipleTouchEnabled:YES];
}
|
Это позволит включить мультитач в нашем представлении, поэтому сенсорное событие будет содержать несколько касаний, которые мы можем использовать.
Теперь мы можем покончить с ядром нашего приложения, используя событие touchesBegan:withEvent:
Добавьте следующий метод под viewDidLoad:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// Remove old red circles on screen
NSArray *subviews = [self.view subviews];
for (UIView *view in subviews) {
[view removeFromSuperview];
}
// Enumerate over all the touches and draw a red dot on the screen where the touches were
[touches enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
// Get a single touch and it’s location
UITouch *touch = obj;
CGPoint touchPoint = [touch locationInView:self.view];
// Draw a red circle where the touch occurred
UIView *touchView = [[UIView alloc] init];
[touchView setBackgroundColor:[UIColor redColor]];
touchView.frame = CGRectMake(touchPoint.x, touchPoint.y, 30, 30);
touchView.layer.cornerRadius = 15;
[self.view addSubview:touchView];
[touchView release];
}];
}
|
Этот метод просто берет набор касаний, которые ему передают, зацикливается на каждом касании и рисует красный круг, где касание произошло на экране.
Если вы создаете и запускаете свое приложение, вы должны увидеть конечный продукт, который выглядит примерно так:
И это все, это все, что нужно для реализации пользовательской сенсорной обработки в вашем следующем проекте iOS. Спасибо за чтение, и если у вас есть какие-либо вопросы / комментарии, вы можете оставить комментарий ниже.