Tôi muốn đạt được những điều sau đây.Tạo UIView chụp các vòi nhưng minh bạch đối với tất cả các cử chỉ khác
Tình huống: Bàn phím iOS được bật trên màn hình trong khi người dùng đang nhập vào một trường văn bản cụ thể. Người dùng có thể nhấn bất kỳ nơi nào bên ngoài bàn phím và trường văn bản để loại bỏ bàn phím (mà không kích hoạt bất kỳ nút nào hiển thị). Ngoài ra, người dùng có thể kéo bên ngoài bàn phím và quan sát hành vi kéo bình thường trên một số sắp xếp các chế độ xem có thể cuộn.
Về mặt lý thuyết, tôi đặt một “bù đắp” UIView
trên hầu hết các màn hình mà ứng xử như vậy:
Nếu người dùng chạm trên trang bìa, sau đó tôi chụp tap đó (vì vậy mà tôi có thể , ví dụ, loại bỏ bàn phím). Điều này dễ thực hiện bằng cách chặn các sự kiện chạm trong lớp con
UIView
hoặc sử dụng trình nhận dạng cử chỉ nhấn.Nếu người dùng kéo trên bìa, sau đó nắp bỏ qua hoặc chuyển tiếp những chạm này; chúng được nhận bởi các lớp bên dưới giống như chúng không có nắp đậy.
Vì vậy: người dùng có thể cuộn nội dung bên dưới trang bìa, nhưng không nhấn vào nội dung bên dưới trang bìa. Một vòi nước "bên ngoài" của bàn phím và trường văn bản nên loại bỏ bàn phím (và bao gồm), nhưng không nên kích hoạt bất cứ điều gì.
Tôi làm cách nào để đạt được điều này?
Bạn phải xem xét việc triển khai phương thức ủy nhiệm chạm và chuyển giao cho các giao diện phía sau nó để vuốt. '- (void) touchesBegan: (NSSet *) chạm với sự kiệnEvent: (UIEvent *) { [otherView touchesBegan: chạm vớiEvent: event]; } 'Một cách khác là triển khai, UIPanGestureRecognizer và đặt cancelsTouchesInView = YES là' UIPanGestureRecognizer * gr = [[UIPanGestureRecognizer alloc] initWithTarget: tự hành động: @selector (handlePan)]; [gr setCancelsTouchesInView: YES]; [myButton addGestureRecognizer: gr]; [phát hành gr]; ' – iDev
@mjh, bạn đã bao giờ tìm thấy giải pháp cho điều này chưa? – kpozin