Tương tác với con trỏ trên iPadOS 13.4

Tram Ho

Vào tháng 3 năm 2020, iPad OS 13.4 đã được phát hành và con trỏ được giới thiệu. Nó có thể được sử dụng bằng cách kết nối chuột hoặc trackpad với iPad (có dây hoặc không dây).

Thiết bị hỗ trợ

Tất cả các mẫu Ipad Pro

iPad Air 2 trở lên iPad (thế hệ thứ 5) trở lên iPad mini 4 trở lên

Các thiết bị được hỗ trợ có phạm vi rộng vì nó cũng hỗ trợ các thiết bị được phát hành 4-5 năm trước

Hiệu ứng từ

Khi bạn di chuyển con trỏ qua nút, con trỏ sẽ chuyển sang nút có hình động nhảy. Ngoài ra còn có các hình ảnh động bám vào các nút khi con trỏ rời khỏi, chúng được gọi là ” Hiệu ứng từ “.

3 loại hiệu ứng

Có ba loại hiệu ứng khi con trỏ di chuyển qua nút.

Điểm nổi bật:

Con trỏ thay đổi thành một nút. Nó được sử dụng trong các biểu tượng thanh công cụ và menu.

Thang máy

Nút mở rộng và con trỏ biến mất. Nó được sử dụng như một biểu tượng trên màn hình chính.

Bay lượn

Một lớp phủ (hoặc lớp lót) được hiển thị. Bạn cũng có thể phóng to nút, thêm bóng và thay đổi hình dạng của con trỏ dưới dạng tùy chọn. Hiệu ứng khác nhau có thể được thực hiện bằng cách tùy chỉnh.

Tự do chọn hình dạng con trỏ

Hình dạng con trỏ tương thích nếu nó có thể được biểu thị bởi UIBezierPath . Ví dụ, trong Keynote, hình dạng của con trỏ thay đổi khi bạn thay đổi kích thước văn bản.

API UIPulumInteraction

Sử dụng UIPointerInteraction API để hỗ trợ con trỏ.

Tuy nhiên, trong UIKit, UIButton, UIBarButtonItem, UISegmentedControl, UIMenuController , v.v. đã hỗ trợ con trỏ. Ví dụ: để tạo một UIButton tương ứng với một con trỏ, hãy thực thi đoạn mã sau.

Theo mặc định, hiệu ứng Highlight được áp dụng, nhưng nếu bạn muốn áp dụng hiệu ứng hoặc hình dạng con trỏ khác, hãy sử dụng pointerStyleProvider .

Đăng ký UIPointerInteraction để phù hợp với các con trỏ trong các khung nhìn khác. Cách sử dụng tương tự như UIDragInteraction / UIDropInteraction để thực hiện kéo và thả và UIContextMenuInteraction để thực hiện menu ngữ cảnh.

Các phong trào thực tế là như sau. Con trỏ bây giờ hoạt động đúng trong UIView.

Trong ví dụ trên, hiệu ứng Nổi bật được sử dụng, nhưng nếu bạn muốn hiển thị lớp phủ với hiệu ứng Hover, hãy triển khai pointerInteraction(_:styleFor 🙂 như sau.

Các phong trào trông như thế này. Không giống như Highlight, Hover không thay đổi hình dạng của con trỏ, chỉ có lớp phủ được hiển thị. Hiệu ứng từ cũng không được áp dụng.

Nếu bạn muốn áp dụng một hiệu ứng hoàn toàn khác ngoài Highlight, Lift, Hover, bạn có thể thực hiện hoạt hình của riêng mình bằng cách sử dụng UIPointerInteractionDelegate của UIPulumInteractionDelegate (_:willEnter: animator:)/pointerInteraction (:willExit:animator:) .

Trong ứng dụng lịch làm việc của tôi, một trình xử lý được hiển thị khi con trỏ được di chuyển đến cuộc hẹn và nó được sử dụng để thực hiện chức năng thay đổi độ dài của cuộc hẹn bằng cách kéo nó.

Cuối cùng, bạn có thể muốn phân biệt giữa đầu vào ngón tay và con trỏ. Ví dụ: chức năng “Thay đổi độ dài của cuộc hẹn bằng cách kéo cạnh của cuộc hẹn” ở trên là một chức năng thuận tiện khi sử dụng con trỏ, nhưng kéo ngón tay của cuộc hẹn bằng ngón tay Đây là một kỹ thuật khó. Ngoài ra còn có vấn đề là trình xử lý thay đổi kích thước không được hiển thị khi hoạt động bằng ngón tay của bạn.

Trong trường hợp như vậy, bằng cách thêm khóa UIApplicationSupportsIndirectInputEvents vào Info.plist, giá trị của UITouch.type sẽ là UITouch.TouchType.direct nếu đó là ngón tay và UITouch.TouchType.indirect nếu đó là con trỏ.

Tuy nhiên, nếu bạn thêm khóa này, ví dụ, khi triển khai UIGestureRecognizer tùy chỉnh, UIGestureRecognizer.numberOfTouches có thể là 0, dẫn đến một hiệu ứng phụ như sự cố tại UIGestureRecognizer.location (ofTouch:in:) . , Bạn cần kiểm tra lại ứng dụng. Xem tài liệu này để biết thêm chi tiết.

Sở thích

Tương tác con trỏ

Hướng dẫn giao diện con người: Con trỏ (iPadOS)

Ứng dụng UIApplicationSupportsInirectInputEvents

Hỗ trợ tương tác con trỏ

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo