2009-11-11 4 views
1

맨 위에 검색 막대가있는 tableview가 있습니다. 검색을 클릭하면 첫 번째 응답자가 호출되고 키보드가 나타납니다. 검색 창에는 취소 버튼이 있지만 테이블이 비어있을 때 사용자는 빈 테이블 행의 아무 곳이나 탭하여 검색 표시 줄과 키보드를 첫 번째 응답자로 사임 할 수 있기를 원합니다. 어떻게해야합니까?비어있는 UITableView를 눌러 검색 창을 닫습니다.

답변

4

touchesEnded 메서드를 재정의하는 고유 한 UITableView 클래스를 만들어야합니다. 그런 다음보기 컨트롤러가되어야하는 대리인에게 다시 전화를 걸어 UISearchBar에 첫 번째 응답자의 사임을 알리라고 지시 할 수 있습니다.

jQuery과 파생 클래스는 다음과 같이 보일 것입니다 :

#import <UIKit/UIKit.h> 

@interface FRTableView : UITableView { 
} 

@end 

// ------------------------------ 

#import "FRTableView.h" 

@implementation FRTableView 

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesEnded:touches withEvent:event]; 
    NSLog(@"Touches ended"); 

    // Bubble back up to your view controller which should be this 
    // table view's delegate. 
    if ([self delegate] && [[self delegate] respondsToSelector:@selector(touchEnded)]) 
     [[self delegate] performSelector:@selector(touchEnded)]; 
} 

@end 

당신이 정상 jQuery과 클래스 대신에 사용자 정의 클래스를 사용하는 인터페이스 빌더에서 테이블보기를 설정해야합니다. 그런 다음 뷰 컨트롤러에, 나는이 같은 touchEnded라고 한 선택을 구현 : 검색 창은 인터페이스 빌더에서 UISearchBar에 연결 함께 IBOutlet입니다

- (void)touchEnded; 
{ 
    NSLog(@"Back in root view controller."); 
    [searchBar resignFirstResponder]; 
} 

.

0

Y는 ...... 유 시도 UISearchDisplayController

해달라고

그냥 UR .H 파일

함께 IBOutlet UISearchBar * mySearchBar에서 이러한 정의; UISearchDisplayController * mySearchDisplayController; IBOutlet UITableView * myTableView;

그냥이 코드를 작성 지금하는 .m 파일에 .H

에 UISearchBarDelegate을 처리

mySearchDisplayController = [[UISearchDisplayController ALLOC] initWithSearchBar : mySearchBar contentsController : 자기] mySearchDisplayController.searchResultsDelegate = self; mySearchDisplayController.searchResultsDataSource = self; mySearchDisplayController.delegate = self;

도움이 되길 바랍니다 .......

관련 문제