UITableView
에 UISearchBar
이 있고 작동하지 않는 특정 요구 사항이 있습니다.키보드가 내려져 있고 x가 두드려 졌을 때 UISearchBar에서 작업 수행
내 UISearchBar (showsCancelButton = NO)
에 취소 버튼이 없으므로 기존 검색을 취소하려면 UISearchBar
내의 x에 완전히 의존해야합니다. 키보드의 "검색"버튼을 사용하여 키보드를 닫습니다 (내 경우에는 완료라고 함).
사용자가 내 앱에서 검색 할 때 사용자 환경이 좋지 않아 navigation bar button
항목을 사용 중지하고 검색이 취소 된 경우에만 탐색 모음 버튼 항목이 다시 표시됩니다. 그게 다 효과적이야.
나는 하나의 특정 시나리오를 가지고 있지만 나는 주변에 있습니다. 키보드가 사임으로
1) x는 UISearchBar
2를 입력 검색 창에 탭과 키보드
3 사라집니다
4) UISearchBar
에있는 x를 탭하면 SearchBar
의 텍스트가 사라지고보기가 새로 고침니다.
5)이 시점에서 탐색 모음 버튼을 다시 활성화해야하지만 ' 안돼.
코드 :
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.timelineSearchBar.showsCancelButton = NO;
if ([searchText length] == 0)
{
[self.timelineSearchBar performSelector:@selector(resignFirstResponder)
withObject:nil
afterDelay:0];
}
나는 x가 잘되는 눌렀을 때 위의 코드는 키보드를 닫 의미하는 것을 알고있다.
필자의 경우 키보드가 이미 사임되었으므로 x를 두드리면 탐색 모음 항목이 다시 활성화됩니다.
self.addButton.enabled = YES;
위의 if 문은 전혀 수행하지 않으며 탐색 모음 항목은 여전히 사용 중지되어 있습니다.
나는 심지어 if 문에서 시도했다 :
[self.timelineSearchBar performSelector:@selector(enableAdd)
withObject:nil
afterDelay:0];
- (void)enableAdd
{
self.addButton.enabled = YES;
}
하지만 검색 창은 그 enableAdd 선택에 응답하지 않는 말을 충돌합니다.
나는 중단 점을 수행하고 위의 if 문이 x를 탭하면 문에 들어가서 단추를 활성화하는 코드를 "실행"하지만 실제로 발생하지는 않는지 확인합니다.
또한 내 최종 편집 방법은 다음과 같습니다
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
[searchBar setShowsCancelButton:NO animated:YES];
self.addButton.enabled = YES;
}
업데이트 : 내가 성공하지 여기 http://engineeringtheworld.wordpress.com/2011/04/11/detecting-when-clear-is-clicked-in-uisearchbar-x-button/ 링크를 시도했습니다 - 텍스트 필드의 shouldClear 메소드가 호출되지 않습니다. 나는 iOS 7을 사용하고 있습니다. 아마도 textFields로 뷰를 임베드하는 또 다른 방법이 있을까요? 이것은 아마도 올바른 접근 방식 일 수 있습니다. 그러나이 샘플의 for 문은 결코 사실로 평가되지 않기 때문에 코드와 함께 작동하지 않습니다 (NSLog에 넣었습니다).
UPDATE 2 : if 문 위에, 나는 searchBarCancelButton 방법이라고 나는 물론 그 올바른 접근이 없었다 극단적 인 루프가 발생되고 있었다 경우에서이에
[self performSelector:@selector(searchBarCancelButtonClicked:) withObject:self.timelineSearchBar afterDelay: 0];
모든 지침 것 정말 고맙게 생각합니다. 나는 중요한 단계를 놓치고 있다는 것을 압니다.하지만 저는 그 사실을 정확히 알 수 없습니다. >searchBarShouldBeginEditing:
- ->searchBarTextDidBeginEditing:
->searchBarTextDidEndEditing:
textDidChange
searchBar:textDidChange:
:
어디에서'addButton.enabled = NO'를 설정합니까? – michaels
안녕 마이클, searchBarShouldBeginEditing 및 searchBarSearchButton에서 if ([self.timelineSearchBar.text length]> 0) 문을 사용하여 클릭하면 else가이 델리게이트 메소드에서 버튼을 다시 활성화합니다. 아니 그게 어디에 설정되어 있습니다 아니 – amitsbajaj