2009-07-23 29 views
5

Cho một trạng thái nhất định của một trong những UIViews của tôi, tôi muốn nó phản hồi với touchesBegan và sau đó hủy bỏ bất kỳ liên lạc nào khácĐược yêu thích/Đã kết thúc tiếp tục từ sự kiện touchesBegan cụ thể đó.Bạn có thể buộc một sự kiện chạm để hủy sau khi chạm vàoBan không?

Về cơ bản tôi có một lớp con UIView ở phần còn lại và nếu nó được xúc động, tôi muốn di chuyển một số UIView khác ra khỏi ... thì lần sau nó chạm vào chuỗi trả lời có thể phản hồi bình thường để chạm vàoMoved/Kết thúc ..

vâng, tôi có thể kiểm tra trạng thái này bằng cách chạm/Đã kết thúc nhưng tôi tự hỏi liệu có cách nào chỉ làm hỏng sự kiện cảm ứng giữa pha.

Trả lời

-2

theo như tôi biết, UIScrollView có thể hủy các lần chạm. Vì vậy, tôi đoán có một số cách để làm điều đó. Xin lỗi tôi không thể cung cấp một giải pháp chính xác hơn.

0

Tôi chưa thử, nhưng tôi dự đoán có giáo dục.

Trả lời đầu tiên là người nhận hiện tại của các sự kiện chạm. Vì vậy, từ chức như là người trả lời đầu tiên nên dừng các sự kiện liên lạc nhiều hơn từ sắp tới. Một liên lạc mới xuống sẽ thiết lập một phản ứng đầu tiên mới.

[self resignFirstResponder]; 
+0

không. không hoạt động. touchesMoved & touchesEnded vẫn được gọi là ... – Meltemi

+0

Đoán được giáo dục là tốt, OP thực hiện công việc kiểm tra là không sao, không trả lời kết quả và xóa hoặc sửa câu trả lời của bạn -1 –

0

Giả sử bạn có một cảm ứng, các đối tượng liên lạc luôn luôn là như nhau, có nghĩa là bạn có thể so sánh bằng ==

UITouch *anyTouch = [touches anyObject]; 
if (anyTouch != self.lastTouch) 
    return; 

Vì vậy, bằng cách lưu trữ cuối cùng UITouch trong UIView lớp con của bạn (trong ví dụ Tôi sử dụng một tài sản được gọi là lastTouch), bạn có thể tìm ra những chạm bạn muốn bỏ qua và bạn muốn nhận ra điều gì khi di chuyển và kết thúc/hủy. Không thanh lịch và không trực tiếp, nhưng nó cho phép bạn có được những gì bạn muốn.

Điều này có thể được mở rộng cho nhiều lần chạm, tất nhiên.

1
let fakeTouch:Set<NSObject> = [UITouch()] 
    let event  = UIEvent() 

    self.touchesEnded(fakeTouch, withEvent: event) 
+1

Vui lòng thêm một số giải thích cho lý do mã của bạn hoạt động để người dùng trong tương lai có thể dễ dàng hiểu nó. – Prudhvi

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