2011-09-24 25 views
23

Tôi đã nhận thấy một sự chậm trễ nhỏ trên trạng thái được đánh dấu của một UIButton khi chạm xuống nếu nó nằm trong một UIScrollView (hoặc xem bảng). Nếu không, trạng thái được đánh dấu là khá nhiều tức thì.Có thể loại bỏ độ trễ của trạng thái được đánh dấu của UIButton bên trong UIScrollView không?

Tôi phỏng đoán điều này phải theo thiết kế để tạo cơ hội cho người dùng cuộn. Nhưng có vẻ như nút này không phản hồi tôi. Có cách nào để sửa lỗi này?

Trả lời

52

Thật vậy, đó là một lựa chọn thiết kế. Nó cần thời gian nhỏ này để phân biệt một cuộn (panGesture) từ một vòi nước. Nếu bạn loại bỏ sự chậm trễ này, thì người dùng sẽ không thể cuộn nếu anh ấy đặt ngón tay lên đầu nút, đó không phải là trải nghiệm người dùng tốt.

Do chế độ xem cuộn không có thanh cuộn nên phải biết liệu một liên lạc có tín hiệu ý định cuộn so với ý định theo dõi một chế độ xem phụ trong nội dung hay không. Để thực hiện xác định này, nó tạm thời chặn sự kiện chạm xuống bằng cách khởi động bộ hẹn giờ và trước khi bộ hẹn giờ kích hoạt, xem ngón tay chạm có thực hiện bất kỳ chuyển động nào không. Nếu bộ hẹn giờ kích hoạt mà không có thay đổi đáng kể về vị trí, chế độ xem cuộn sẽ gửi các sự kiện theo dõi đến chế độ xem phụ được chạm vào của chế độ xem nội dung.

từ UIScrollView Documentation

tôi sẽ không khuyên bạn nên vô hiệu hóa sự chậm trễ, nhưng nếu bạn nhấn mạnh, bạn có thể đặt nó trong xây dựng giao diện (chọn Scroll View, và trên bảng bên phải, ngay dưới "Bounces Thu phóng ") hoặc sử dụng mã này:

scrollView.delaysContentTouches = false 
+0

Cảm ơn! Câu trả lời hoàn hảo. Tôi sẽ nghĩ về nó. Tôi muốn có một cách để thoát khỏi sự chậm trễ nhưng vẫn cho phép di chuyển. – pixelfreak

+2

@pixelfreak không thể tạo chế độ xem cuộn tùy chỉnh sẽ thực hiện cả hai, nhưng người dùng iOS được sử dụng với hành vi này và sẽ tốt hơn nếu bạn không gây rối với khái niệm tương tác người dùng iOS cơ bản. –

+0

Chỉ có thể thực hiện điều này cho các bản xem trước cụ thể của chế độ xem cuộn, khi câu hỏi được hỏi? –

Các vấn đề liên quan