Video: 3 ĐIỀU CẦN LÀM NGAY sau khi bị mất iPhone trong năm 2019! 2025
Hầu hết các sự kiện được gửi đến ứng dụng iOS đều được đóng gói trong một đối tượng sự kiện - một thể hiện của lớp UIEvent. Trong trường hợp liên quan đến các sự kiện liên quan, đối tượng sự kiện chứa một hoặc nhiều đối tượng cảm ứng (UITouch) đại diện cho các ngón tay đang chạm vào màn hình.
Khi người dùng đặt các ngón tay trên màn hình, di chuyển chúng xung quanh và cuối cùng là loại bỏ chúng khỏi màn hình, hệ thống báo cáo các thay đổi cho mỗi ngón tay trong đối tượng cảm ứng tương ứng.
Phân phối và xử lý sự kiện là công việc của các đối tượng phản ứng, đó là trường hợp của lớp UIResponder. Lớp UIApplication, UIViewController, UIWindow và UIView (và AppDelegate của riêng bạn) đều kế thừa từ UIResponder. Sau khi kéo một sự kiện khỏi hàng đợi sự kiện, ứng dụng gửi sự kiện đó đến đối tượng UIWindow nơi nó xảy ra.
Các đối tượng cửa sổ, lần lượt, chuyển tiếp các sự kiện để trả lời đầu tiên của nó, được chỉ định là người đầu tiên nhận các sự kiện khác với sự kiện chạm vào. Trong trường hợp các sự kiện chạm, người trả lời đầu tiên thường là đối tượng xem (UIView), trong đó chạm đã diễn ra. Ví dụ, một sự kiện cảm ứng xảy ra trong một nút được gửi đến đối tượng nút tương ứng.
Nếu người trả lời đầu tiên không thể xử lý một sự kiện, nó chuyển tiếp sự kiện sang phản hồi tiếp theo của nó, thường là một khung nhìn Parent hoặc xem bộ điều khiển. Nếu đối tượng đó không thể xử lý sự kiện, nó sẽ chuyển tiếp nó tới phần trả lời tiếp theo của nó và cho đến khi sự kiện được xử lý.
Loạt các đối tượng phản hồi được liên kết này được gọi là chuỗi trả lời. Tin nhắn tiếp tục đi lên chuỗi trả lời - đối với các đối tượng trả lời ở mức cao hơn, chẳng hạn như cửa sổ, ứng dụng và đại biểu của ứng dụng - cho đến khi sự kiện được xử lý hoặc bị loại bỏ.
Đối tượng trả lời xử lý sự kiện thường đặt ra một loạt các hành động có lập trình của ứng dụng. Danh sách sau đây cung cấp trình tự thời gian của những gì thực sự xảy ra khi người dùng chạm vào một cái gì đó:
-
Một sự kiện chạm sự kiện được tạo ra để đáp ứng với vòi của người dùng.
Việc chạm vào một ngón tay sẽ thêm một sự kiện chạm vào hàng đợi sự kiện của ứng dụng, nơi mà sự kiện đó đóng gói được đặt vào, nói cách khác - một đối tượng UIEvent. Một đối tượng UITouch tồn tại cho mỗi ngón tay chạm vào màn hình, để bạn có thể theo dõi các chạm cá nhân. Khi người dùng thao tác màn hình bằng ngón tay, hệ thống báo cáo những thay đổi cho mỗi ngón tay trong đối tượng UITouch tương ứng.
-
Trình giám sát vòng lặp chạy thực hiện sự kiện.
Khi xảy ra sự cố cần xử lý, mã xử lý sự kiện của quy trình UIA xử lý các sự kiện chạm vào các sự kiện bằng cách gửi chúng tới đối tượng phản hồi thích hợp- đối tượng đã đăng ký chịu trách nhiệm về việc làm một cái gì đó khi một sự kiện cụ thể xảy ra (ví dụ như người dùng chạm vào màn hình).
Đối tượng Responder có thể bao gồm các trường hợp của UIApplication, UIWindow, và UIView (và bất kỳ lớp con của nó), cũng như UIViewConroller (và bất kỳ lớp con của nó). Tất cả các lớp này thừa kế từ UIR.
-
Đối tượng trả lời quyết định cách xử lý sự kiện.
Ví dụ: sự kiện chạm vào xảy ra với nút trong chế độ xem được gửi đến đối tượng nút. Đối tượng nút điều khiển sự kiện bằng cách gửi một thông điệp hành động tới một đối tượng khác - trong trường hợp này là đối tượng UIViewController. Điều này cho phép bạn sử dụng các đối tượng nút tiêu chuẩn mà không cần phải muck về trong internals của họ - bạn chỉ cần nói cho nút phương pháp gì bạn muốn có gọi trong mục tiêu của bạn.
Việc xử lý thư có thể dẫn đến thay đổi cho chế độ xem, một chế độ xem mới hoàn toàn hoặc một số thay đổi khác trong giao diện người dùng. Khi một trong những kết quả này xảy ra, khung nhìn và đồ họa sẽ tiếp nhận và xử lý các sự kiện bản vẽ yêu cầu.
-
Ứng dụng của bạn sau đó quay lại vòng lặp chạy.
Sau khi sự kiện được xử lý hoặc bị loại bỏ, kiểm soát ứng dụng sẽ trở lại vòng lặp chạy. Vòng chạy sau đó xử lý sự kiện tiếp theo hoặc đặt thread vào chế độ ngủ nếu nó không có gì để làm.
Nhưng do ứng dụng của bạn không phải là duy nhất trên thiết bị nên nó có thể bị gián đoạn bởi tin nhắn SMS hoặc người dùng chạm vào nút Trang chủ. Khi ứng dụng của bạn bị gián đoạn, bạn sẽ phải chăm sóc một số điều trước khi điều khiển được chuyển sang một ứng dụng khác.
