2010-01-14 1 views
8

섹션 인덱스가 텍스트 필드와 겹치지 않도록 테이블 헤더 안에있을 때 UISearchBar의 너비를 어떻게 변경합니까? 전화 앱의 연락처보기에서 찾은 레이아웃과 동일한 레이아웃을 다시 만들고 싶습니다.UISearchBar 테이블 섹션 인덱스 제목 겹치기

답변

5

하나의 가능한 솔루션은 tableHeaderView에 사용자 지정보기를 추가하는 것입니다. 이것은 내가 한 일입니다 :

searchBar는 헤더 파일에 선언 된 UISearchBar입니다. UIView를 만들고 전체 너비에 대해 UINavigationBar를 추가하고 위에 짧은 UISearchBar를 추가합니다. 그런 다음 마침내 tableHeaderView에 UIView를 할당했습니다.

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)]; 

UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
[customTableHeaderView addSubview:dummyNavigationBar]; 
[customTableHeaderView addSubview:searchBar]; 
[dummyNavigationBar release]; 

self.tableView.tableHeaderView = customTableHeaderView; 
[customTableHeaderView release]; 

더 우아한 해결책은 contentStretch 속성을 사용하여 UISearchBar를 늘리는 것일 수 있습니다. 나는 여전히 그것을 시도하고 그것이 효과가 있는지 확인해야한다.

+0

설정 ** contentStretch ** 나를 위해 작동하지 않았습니다. – Sney

+0

@Snej 음 ... 다음은 내가 아는 유일한 해결책입니다. 알려 주셔서 고마워요. – srik

+0

스토리 보드에서도 작동합니다. –

0

UISearchDisplayController를 사용하는 경우 원하는 동작은 this answer에 표시된대로 자동으로 작동합니다.

1

검색 막대의 오른쪽 가장자리에 'A'와 'B'가 나타나는이 스크린 샷에서 볼 수있는 바와 같이 화면 오른쪽의 색인 문자 중 A-Z가 검색 창에 오버런 했습니까?

enter image description here

의 (a) 나는이 알파벳 오버런 문제를 방지 할 수있는 방법을 찾을 수 없습니다. Scott McCammon의 대답과 연결된 접근법은 Apple에 의해 금지되어 있습니다 (그렇다하더라도이 문제를 해결할지는 확실하지 않습니다).

(b) 내 iPod touch (4 세대)에서 Apple의 iOS 6.0.1의 연락처의 응용 프로그램에서이 동작이 나타납니다.

(c) 검색 막대가 테이블보기의 머리글에 있기 때문에 논리적으로 버그가 아닌 기능이라고 생각합니다. 헤더는 테이블 뷰의 일부이며 테이블 뷰의 일부처럼 스크롤되므로 나머지 테이블 뷰와 마찬가지로 인덱스 알파벳이 그려지는 것이 좋습니다.

이 문제는 범위 단추가있을 때 더 문제가됩니다. 범위 버튼의 오른쪽에 공간이 예약되어 있지 않으므로 색인 알파벳이 가장 오른쪽에있는 버튼 바로 위에 표시됩니다.