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