[iOS] UISearchBar 사용시 주의점 ( iOS4 vs iOS5 )

iOS  앱에서 검색창을 이용하는 경우가 많은데 그 경우에는 UISearchbar 를 활용한다.

그러다보면 자연스럽게 현재 검색중인지를 알 필요가 있다. ( 검색중인 경우와 검색중이지 않은 경우에 다른 데이터를 보여줄수도 있으므로…)

간단히 생각해보면, searchbar 에 들어있는 text 길이만으로 판단이 가능하다.

-(BOOL) isFiltering {
if ( [self.searchBar.text.length > 0 ] )
    return YES;
  return NO;
}

추가적인 조치를 해주지 않아도 iOS5 에서는 생각데로 동작한다. 그런데, iOS4 에서는 다르다.

일반적으로 유저가 검색을 취소하는 방법은 크게 두가지가 있다.

  1. 명시적으로 백스페이스를 눌러 글을 지우거나 x 버튼을 누름
  2. 취소버튼을 누름

1 이나 2가 수행되고 나면 당연히 searchbar 의 text 는 clear 되서 길이가 0이라고 생각하는 것이 맞다. 하지만, 슬프게도 iOS4에서 그렇게 되지 않는다. 2 ) 의 경우 text 를 clear 가 iOS4 에서는 되지 않는다. 대신에 다음 검색을 시도하는 순간 진행된다.
그럼 어떻게 해야할까? 다행히 UISearchBarDelegate 에서는 searchBarCancelButtonClicked: 라는 메소드를 제공해주고 있다. 명시적으로 취소버튼이 눌렸을때 searchBar 의 텍스트를 정리해주면 된다.

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
   searchBar.text = @"";
}

ios 어플을 개발하다보면 애플느님이 일관성있게 개발해주셔서 하위호환이 상당히 잘 유지되는 편이다. 그런데, 가끔 이렇게 뒤통수를 치는 경우가 있어서 당황스럽다. 하나하나 잘 기억하고 대응을 해야할 것이다.

One Comment on “[iOS] UISearchBar 사용시 주의점 ( iOS4 vs iOS5 )

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: