5

Tôi đang làm việc trên một dự án iOS nơi tôi muốn triển khai chức năng tìm kiếm. Tôi đang sử dụng UISearchBarUISearchDisplayController và tôi muốn làm cho UISearchBar ẩn hoàn toàn. Khi người dùng chạm vào UIBarButtonItem, thanh tìm kiếm sẽ xuất hiện và "trở thànhFirstResponder", trong khi khi người dùng nhấp vào nút Cancel trong thanh tìm kiếm, thanh sẽ biến mất.Cách phát hiện thao tác nhấn trên nền màu xám (mờ) trong UISearchDisplayController

Giao diện đang hoạt động chính xác nhưng tôi gặp sự cố khi biến mất. Tôi đã quản lý để ẩn thanh tìm kiếm khi người dùng chạm vào nút Cancel (phương pháp searchBarCancelButtonClicked), nhưng tôi không thể ẩn thanh tìm kiếm khi nền màu xám (mờ) trong UISearchDisplayController được nhấn. Theo như tôi biết, không có phương pháp để phát hiện sự kiện này, vì vậy nó là cần thiết để áp dụng một số hack. Bạn có biết bất kỳ, hoặc cách tốt nhất để phát hiện khai thác trên nền màu xám là gì?

Trả lời

5

Vì vậy, cuối cùng tôi đã làm việc đó. Ngoài số searchBarCancelButtonClicked:(UISearchBar *)searchBar, cũng cần phải ẩn thanh tìm kiếm trong searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller. Có vẻ như gọi lại này được gọi ngay cả khi nền màu xám (mờ) được khai thác, vì vậy nó có thể dễ dàng được sử dụng để ẩn thanh tìm kiếm.

+0

Bạn là một thiên tài! – pechar

0

UISearchDisplayController thường bao gồm UISegmentedControl, UIResultsTable và bàn phím. Bảng kết quả là nơi bạn muốn phát hiện cảm ứng này để loại bỏ. Với điều đó được biết, có thể bạn có thể thêm UIButton trong suốt vào chế độ xem đó loại bỏ phản hồi đầu tiên hoặc Có thể bạn thêm UIGestureRecognizer trên chế độ xem trong suốt có hiệu quả tương tự? Chỉ cần suy nghĩ ra khỏi đầu và đã không cố gắng này bản thân mình, nếu nó hoạt động cho bạn im vui mừng!

+0

Tôi nghĩ rằng UIResultsTable không phải là những gì tôi đang tìm kiếm. Bảng kết quả chỉ được hiển thị sau khi nhập vào thanh tìm kiếm. Trước đó, không có UITableView ở đó, chỉ là một nền màu xám. – zvonicek

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