2012-06-08 4 views
3

몇 시간 동안 솔루션을 찾으려고 노력했지만 아무런 주사위가 없었습니다 ... 전적으로 프로그래밍 방식으로 UISearchBar를 구현하려고했습니다 (no xib, 인터페이스 작성기 없음).클릭했을 때 UISearchBar가 응답하지 않음

@synthesize searchBar; 

- (void)loadView 
{ 

[super loadView]; 

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)]; 
searchBar.delegate = self; 
[self.view addSubview:searchBar]; 

} 
나는이 이상 갔었다

내가 얼마나 많이 알고, 아무 생각하지 않습니다

@interface RLCASearchMasterViewController : UIViewController<UISearchBarDelegate> 

@property (strong, nonatomic) RLCAGUIElements *gui; 
@property (strong, nonatomic) RLCAUITableView *table; 
@property (strong, nonatomic) UISearchBar *searchBar; 

@end 

내하는 .m 구현 : 여기

내 .H 헤더입니다 내가 뭘 잘못하고있는 ... UISearchBar 올바른 크기와 모든보기로 잘 추가됩니다, 그러나 때 클릭/도청, 키보드 나타나지 않습니다. 나는 그러나 다음 불러 일으키는 경우는 아마 위임하지 그래서,

[searchBar becomeFirstResponder]; 

키보드가 쇼를 수행하지만 실제로 클릭 됐어요 여부를 검출 ... 나는 단지로, 그것은 비록로드를 편집하고 싶지 않아 요청 ...

도와주세요. 감사! :)

감사합니다. Piotr.

+1

다른보기 아래에 있습니까? 그들은 그 접촉을 막을 수 있습니다. – borrrden

+0

나는 모든보기 아래에 있다고는 생각하지 않습니다. 모든 UIColor clearColor 배경을 조사하기 위해 모든보기에서 제거했지만 아무 것도 그것을 덮을 것 같지 않습니다 ... – Piotr

답변

0

위임 메소드를 정의하고 firstResponder가 될 메소드를 searchBarShouldBeginEditing 메소드에 넣으십시오. 여전히 작동하지 않는 경우이보기 위에 다른보기가 없는지 확인하십시오. 이 방법으로, 그것은 터치를 무시할 것입니다.

+0

이봐, 나는 그걸 시도했지만, 어쨌든 ... 고마워요! :) – Piotr

8

좋아요, 알았어요.

작동하지만 왜인지 모릅니다. 누군가가 어떤 통찰력이있는 경우, 나는 ... 그래서

매우 감사하게 될 것입니다 :

나는 대체 :와

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,   self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)]; 
searchBar.delegate = self; 
[self.view addSubview:searchBar]; 

:

searchBar = [[UISearchBar alloc] init]; 
searchBar.delegate = self; 
[searchBar sizeToFit]; 
[self.view addSubview:searchBar]; 

... aaand, 비올라! ;)

모든 답변을 주셔서 감사 드리며 언급 한 바와 같이 이것이 왜 효과가 있었는지 설명해 주시면 감사하겠습니다.

모두 최고가, Piotr.

+0

......비올라 :) – Mario

+1

방금이 문제가 발생하여 무슨 일이 일어나고 있는지 알았습니다. 이 문제는 UISearchBar를 선택할 수 없기 때문에 발생합니다. 이것은 다른 뷰에 의해 다루어 지거나 상위 뷰 컨트롤러가 충분히 크기 때문에 발생할 수 있습니다. 내 경우가 우연히 발생했습니다. 부모보기는 100px 크기로 UISearchBar를 볼 수는 있지만 터치의 유형과 상호 작용하지는 않습니다. 상위 뷰 컨트롤러를 더 큰 크기로 변경하면이 문제가 해결됩니다. –

+0

완벽하게 일 했으므로 고마워요. 귀하의 의견에 –

2
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,         self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size. 

고유 한 초기화 메소드에서 사용하려면 searchBars 프레임에 액세스하면 안됩니다. 나는 생각하지 않을 것입니다, 그때 그것은 아직 inited되지 않았기 때문에 0이 될 것입니다. 따라서 높이가없는 rect 나 NSZeroRect를 제공 할 것입니다.

저는 이것이 문제라고 생각합니다.

+0

+1. 크기는 실제로 아직 설정되지 않았으므로 searchBar.frame을 사용하면 아무 것도 끝내지 않을 것입니다. – Craimasjien