2012-01-18 44 views
7

Có khả năng đặt lại UISearchbar bằng searchDisplayController theo chương trình đang hoạt động và đã chứa văn bản không?Đặt lại UISearchbar theo lập trình

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (tableView == self.searchDisplayController.searchResultsTableView) { 
     searchDisplayController.searchResultsTableView.hidden = YES; 
     searchBar.showsCancelButton = NO; 
     [searchBar resignFirstResponder]; 
    } 
} 

Giải pháp này đang hoạt động nhưng vẫn có văn bản trong thanh tìm kiếm. Nếu tôi thêm các dòng mã đó:

searchBar.text = @""; 

Luôn có chế độ xem trong suốt màu đen.

Bất kỳ giải pháp nào?

+0

thử searchBar.text = nil; –

Trả lời

6

Đây rồi. Đây là phương thức ủy nhiệm được gọi khi người dùng nhấn hủy. Nếu bạn muốn dây nó lên một cách khác nhau chỉ cần khai báo thanh tìm kiếm của bạn như là một lối thoát và tham khảo nó. Dù sao:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; 
    [searchBar resignFirstResponder]; 
} 
+0

Không hiểu cách này sẽ hoạt động? Vui lòng đọc câu hỏi đã cập nhật của tôi –

+0

Câu hỏi hay nhất tại thời điểm này là hỏi chính xác bạn đang tìm kiếm hành vi gì? Trên thanh tìm kiếm của tôi, tôi hiếm khi sử dụng SB với SRC. Tôi chỉ sử dụng một SB và chăm sóc nó được trình bày như thế nào. để "đặt lại" thì mã tôi đã cung cấp là tất cả những gì bạn cần.Nếu bạn đang tìm cách để "làm cho nó ra khỏi con đường" sau đó tôi sử dụng phương pháp đại biểu scrollViewWillBeginDragging để có được bàn phím ra khỏi con đường và để cho người dùng di chuyển qua các kết quả. –

+0

Tôi có thể gửi cho bạn một ví dụ hoàn chỉnh về cách tôi làm việc (ví dụ tôi hầu như luôn sử dụng TableView chứ không phải TableViewController và đặt SB ở vị trí cố định phía trên TV để luôn có thể truy cập được). Như tôi đã nói, biết chính xác bạn muốn cái này trông như thế nào và cách bạn muốn nó hoạt động sẽ giúp chúng tôi giúp bạn tốt hơn. –

0

không bạn phải nghỉ hưu firstResponder

+0

Tôi đã cập nhật câu hỏi của mình. –

+0

từ chức phản hồi đầu tiên sẽ loại bỏ bàn phím. – RyanTCB

0
[self.searchBar resignFirstResponder] 
+1

Giải pháp này giữ thanh tìm kiếm như hiện tại và ẩn bàn phím. –

0

Bạn cũng có thể ẩn một cách rõ ràng resultsTableView, nếu đó là những gì bạn muốn:

searchDC.searchResultsTableView.hidden=YES; 

(searchDC là một thể hiện của UISearchDisplayController)

Điều này sẽ giúp bạn ẩn nút Hủy và nội dung: http://www.alexandre-gomes.com/?p=418

+0

Tôi thích thanh tìm kiếm trống và không được kích hoạt -> no chancelButton –

+0

Xem câu trả lời đã chỉnh sửa –

+0

Xem câu hỏi đã chỉnh sửa của tôi. (-: –

4

Khá chắc chắn những gì bạn đang tìm kiếm là UISearchDisplayController.active

Từ SDK:

@property(nonatomic, getter=isActive) BOOL active 

Nếu bạn đặt giá trị này trực tiếp, bất kỳ thay đổi được thực hiện mà không cần hình ảnh động. Sử dụng setActive: animated: nếu một thay đổi trong trạng thái sẽ được làm động.

Khi người dùng tập trung vào trường tìm kiếm của thanh tìm kiếm được quản lý, bộ điều khiển hiển thị tìm kiếm tự động hiển thị giao diện tìm kiếm. Bạn có thể sử dụng thuộc tính này để buộc giao diện tìm kiếm xuất hiện.

+0

câu trả lời khá tuyệt vời cho câu hỏi đầu tiên tại đây. chào mừng bạn! – brainray

1

Chủ đề này quá cũ nên có bụi. Tuy nhiên ở đây chúng ta đang ở nhanh chóng để

<#your UISearchController variable#>.isActive = false 
Các vấn đề liên quan