방법 이 문제에 대한 해결책. 그것은 약간 해키하고 그리 깔끔하지는 않지만 트릭을합니다. 자체가 당신이 자리를 편집 할 수 없습니다 UISearchBar
때문에
, 나는이 일을함으로써 어떤 접촉에서 그것을 밑에 UITextField
을 설정하고 해제했습니다
는
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([touch.view isDescendantOfView:self.placeHolderTextField]){
return NO;
}
return YES;
}
참고 : <UIGestureRecognizerDelegate>
를 포함하는 것을 잊지 마세요 .h 파일에. 그러나 이것이 작동하지 않는다면 언제든지 사용할 수 있습니다. [self.view sendSubViewToBack:self.placeholderTextField];
다음에는 자리 표시자를 표시하고 싶지 않은 이벤트를 설정했습니다. 이 작업을 수행하려면 순서에 따라 .H 파일에 <UISearchBarDelegate>
을 포함해야합니다 다음 viewDidLoad
에서 , 난 그냥 다시
그리고
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if(searchText.length > 0){
self.placeHolderTextfield.placeholder = @"";
} else{
self.placeHolderTextfield.placeholder = @"search";
}
}
주에서 self.placeHolderTextFiew.placeholder = @"search"
를 호출하고 있습니다.
tableView
도 사용하고 있으므로 DidSelectRowAtIndexPath
메서드를 호출 할 때 자리 표시자를 빈 문자열로 설정하고 있습니다.
희망이 도움이됩니다.
작동하지 않습니다. – jAckOdE
UISearchBarTextField가 검색 막대의 직접 하위보기가 아니기 때문입니다. 클래스를 재귀 적으로 검색하여 계층 구조를 따라 가면서이를 검색하고 오른쪽 텍스트 정렬을 설정할 수 있지만 이는 나쁜 습관입니다. Apple이 클래스 뷰 계층을 다시 변경하면 중단 될 수 있습니다. 어쨌든, 입력되는 동안 텍스트에 대해서만 정렬을 설정합니다. 자리 표시자는 가운데에 정렬되며 아이콘은 여전히 왼쪽 정렬됩니다. – Ash
나는 textview에 도달 할 때까지 subviews를 가져 오기 전에 재귀 적으로 다음 subviews의 subviews를 가져왔다. 그러나 @Ash가 미래에 깨질 것이라고 말했다. –