Kéo cử chỉ

Tram Ho

A dragging motion that invokes an action as the drag-event sequence changes.

Apple Documentation

Trong hướng dẫn này, chúng ta sẽ tìm hiểu Drag Gesture trong SwiftUI là gì:

  • .onChanged.
  • .updating.
  • .onEnded.
  • limit scrolling.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần một số kiến thức cơ bản về:

  • Cơ bản với Swift.
  • Xcode 11 trở lên

.onChanged

onChanged thay đổi giá trị của vị trí khi bạn kéo.

Đầu tiên, tạo một biến để lưu kích thước. Với biến bên dưới, đối tượng được đặt ở tọa độ với x, y là 50

Khi hình chữ nhật di chuyển, bạn sẽ thay đổi rectPosition

Kết quả là bạn có một hình chữ nhật chuyển động như dưới.

.updating

Bạn có thể biết người dùng có đang kéo hay không bằng cách lấy state. Đầu tiên, tạo GestureState để giữ trạng thái drag.

Tại đây, bạn không thể cập nhật isDragging vì nó ở chế độ chỉ đọc.
Tuy nhiên, bạn có thể cập nhật state sau đó nó sẽ cập nhật isDragging.

.onEnded

Nhiều trường hợp bạn chỉ muốn lấy hành động sau khi người dùng kéo xong đối tượng.
Đầu tiên, tạo một biến để biết người dùng kết thúc kéo hay chưa.

Sử dụng cùng mã như trên và chỉnh sửa một chút, cho màu thay đổi nếu x nhỏ hơn 120.

Kết quả:

Hạn chế cuộn ngang

Còn nếu bạn chỉ muốn nó cuộn theo chiều dọc, thì bạn chỉ việc thay đổi giá trị y.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo