2012-11-02 3 views
1

내 탐색 컨트롤러에 UIsearchBar를 추가하려고합니다. 또한 UISearchBar의 취소 버튼을 사용하고 싶습니다.UIBarButtonItem의 UIView에있는 UISearchBar이 예상대로 작동하지 않습니다.

UISearchBar* searchBar = [[UISearchBar alloc] init]; 
searchBar.frame = CGRectMake(0, 0, 300, searchBar.frame.size.height); 
searchBar.translucent = NO; 
searchBar.barStyle = UIBarStyleBlack; 
searchBar.delegate = self; 
UIView* myView = [[UIView alloc] initWithFrame:searchBar.frame]; 
[myView addSubview:searchBar]; 
UIBarButtonItem* sbItem = [[UIBarButtonItem alloc] initWithCustomView:myView];  
[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:chart,sbItem,nil]]; 

searchBar가 비활성 인 문제. 네비게이션 컨트롤러에 나타납니다. 그러나 내가 그것을 탭하면 어떤 식 으로든 반응을 나타내지 않습니다. 취소 버튼을 표시하면 클릭 할 수 없지만 클릭 할 수 없습니다.

UIView에서 UIsearchBar을 감싸지 않는다면 취소 버튼을 표시하고 싶지 않은 경우에는 잘 작동합니다.

UPD 내가 전화하면

[searchBar becomeFirstResponder] 

가 편집 모드로가는 날 A는 버튼과 키보드를 취소 보여 주지만, 검색 창 그것이 PARAMS 프레임 변경을 포장하는보기처럼 보이는에서 내려 10px에 간다 그것의 원래 모습. 그리고 난 당신이 검색 창 프레임에서 착각 생각 ... 그래서 간단한 작업이 너무 많은 시간을 소요 ...

이 부두의 일종처럼 보이는 blackopaque하는 trnsparent에서

답변

2

을 그 배경을 변경, 당신은 검색 창을했다 높이 searchBar.frame.size.height로, 그러나 그 당시에는 높이가 없었다, 그냥 좋아 변경 :

UISearchBar* searchBar = [[UISearchBar alloc] init]; 
searchBar.frame = CGRectMake(0, 0, 300, 40); 
searchBar.translucent = NO; 
searchBar.barStyle = UIBarStyleBlack; 
searchBar.delegate = self; 
UIView* myView = [[UIView alloc] initWithFrame:searchBar.frame]; 
[myView addSubview:searchBar]; 
UIBarButtonItem* sbItem = [[UIBarButtonItem alloc] initWithCustomView:myView];  
[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:chart,sbItem,nil]]; 

내가, 내가 차트가 여기에 무엇 죄송 모른다하고, 그것을 희망 당신이 찾고있는 것입니다.

+0

아이디어를 제공해 주셔서 감사합니다. 하지만. 이 부분은 괜찮습니다. 검색 막대가 렌더링되어야하는 곳에서 렌더링되므로 프레임이 괜찮아 보입니다. 첫 번째 응답자가 된 후에 만 ​​변경됩니다. 검색 창이 비활성 인 주요 문제. 내가 탭할 때 어떤 식 으로든 응답하지 않습니다. 차트는 또 다른 UIBarButtonItem 요소이며 잘 작동합니다. –

+0

테스트를 마쳤습니까? – iSpark

+0

예, 테스트합니다. 그러나 그것은 모두 똑같은 것이 아닙니다. 지금은 하나의 솔루션 만 보입니다.보기 컨트롤러가 나타나면 검색 표시 줄을 첫 번째 응답자로 설정 한 다음 활성 상태가됩니다. 그리고 올바른 래퍼 뷰 프레임과 그 배경. 은혜가 아니라 작동해야합니다. 오늘 그것을 시험 할 것이다. –

관련 문제