Video: Những tính năng trên iOS 12 mà Apple không nhắc đến (P.1) | Điện Thoại Vui 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à RTAppDelegate 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. Đối tượng cửa sổ lần lượt chuyển tiếp sự kiện tới câu trả lời đầu tiên của nó, được chỉ định là người nhận đầu tiên của các sự kiện khác ngoài sự kiện chạm.
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 . Thông điệp 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 diện 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ý một sự kiện thường đưa ra một loạt các hành động có lập trình bằng ứ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 gõ một cái gì đó:
-
Bạn có một sự kiện - ví dụ người sử dụng bấm nút.
Việc chạm ngón tay (hoặc nhấc ngón tay lên màn hình) thêm một sự kiện chạm vào hàng đợi sự kiện của ứng dụng, trong đó sự kiện đó đóng gói được đặt vào, nói cách khác - Đố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 điều khiển màn hình bằng ngón tay, hệ thống sẽ báo cáo những thay đổi cho mỗi ngón tay trong đối tượng 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 xảy ra (ví dụ như khi 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ư UIViewController (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 di chuyển trong nội bộ của chúng - bạn chỉ cần nói cho nút phương pháp nào bạn muốn gọi trong mục tiêu của bạn (thường là bộ điều khiển chế độ xem) và bạn về cơ bản được đặt.
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 một sự kiện được xử lý hoặc bị loại bỏ, kiểm soát ứng dụng 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 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 ứng dụng khác.
