Иерархия классов UIKit. Иерархия UIView на экране

1.

Иерархия класов UIKit.
Иерархия UIView на экране
Нестеренко Павел, iOS

2.

Agenda:
- Иерархия классов UIKit
- Иерархия UIView
- Hit Testing и Responder Chain

3.

Роль UIKit в разработке приложений для
iOS
1. Управление интерфейсом пользователя
2. Работа с событиями и жестами
3. Графическая обработка
4. Доступность

4.

Иерархия классов в UIKit
Класс NSObject
2. Класс UIResponder
3. Класс UIApplication
4. Класс UIView
5. Класс UIViewController
1.
Рис
уно

5.

«Иерархия UIView на экране»
UI
Wi
nd
UI
ow
Vi
Рисунок
2.
Рисунок
3.
-ew
явл
Co
Su
яет
ntr
bvi
ся
oll
ew
ко
Su
er'
нтs
pe
s
ей
од
rvi
Vie
не
но
w
ew
ро Co
ил
ntr
-пр
м
и
ед
ols
дл
UIV
нес
an
ста
я
iew
ко
d
вл
все
кот
льк
UI
ен
х
ор
о
Ele
ие
ост
ое
пр
me
(vi
аль
им
ед
nts
ew)
ны
еет
ста
уп
х
сс
вл
(UIB

6.

Hit Testing
Hit Testing - это рекурсивный поиск среди всей иерархии view к какой прикоснулся
пользователь.
У Каждой UIView есть метод hitTest() -> UIView которая позволяет найти view на которую
было произведено
касание.
hitTest обладает вспомогательным методом pointInside() -> Bool который определяет было
ли совершено
касание в границах данной view.

7.

Как работает Hit Testing
open func hitTest(_ point: CGPoint, with event: UIEvent?) > UIView?
open func point(inside point: CGPoint, with event:
UIEvent?) -> Bool
Рисун

8.

Responder Chain
UIView является наследником UIResponder.
Responder Chain — механизм определения на какую именно view было совершено нажатие. Когда пользователь
нажимает на экран это событие попадает в активное приложение (объект UIApplication). Дальше оно
отправляется в UIWindow, где и запускается цепочка поиска firstResponder’а, в границах которого и было
произведено нажатие.
open func touchesBegan(_ touches: Set<UITouch>, with event:
UIEvent?) - метод вызывается, когда одно или несколько касаний
начинаются на объекте.
open func touchesMoved(_ touches: Set<UITouch>, with event:
UIEvent?) - метод вызывается, когда одно или несколько касаний
перемещаются по объекту
(например, когда пользователь перетаскивает палец по экрану).
open func touchesEnded(_ touches: Set<UITouch>, with event:
UIEvent?) - метод вызывается, когда одно или несколько касаний
завершаются на объекте (например, когда пользователь отводит
палец от экрана).
open func touchesCancelled(_ touches: Set<UITouch>, with event:
UIEvent?) - метод вызывается, когда одно или несколько касаний
отменяются (например, из-за вмешательства системы или других
факторов).

9.

Пример обработки события

10.

Спасибо за внимание!
Нестеренко Павел
astondevs.r
u
English     Русский Правила