반응형
UISearchBar 선언
lazy bar searchBar: UISearchBar = {
let searchBar = UISearchBar(frame: CGRect(...))
searchBar.placeholder = "검색어를 입력하세요."
searchBar.setImage(UIImage(named: "iconSearchDarkGray"), for: .search, state: .normal)
searchBar.setImage(UIImage(named: "iconCloseDarkGray"), for: .clear, state: .normal)
return searchBar
}()
UISearchBarDelegate 프로토콜 추가
검색 버튼을 눌렀을 경우 검색 시작되는 함수
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
if let searchText = searchBar.text {
//검색 처리
} else {
//검색어를 입력해주세요
}
}
UISearchBar x button
searchBarCancelButtonClicked(_ searchBar: UISearchBar)
처음에 이걸로 착각했는데 이거는 x 버튼이 아니라 cancel버튼을 따로 만들어줬을 경우.
화면 터치 시 키보드를 숨기고 싶은데, 원래 알던 방법으로는 숨겨지지가 않았다.
( 화면 터치 시 키보드 숨기기 -> 흥미로운 UITextFieldDelegate 참고 )
빈 화면 터치하면 작동이 잘 되지만, 화면이 컬렉션뷰나 테이블뷰로 이루어져있을 경우 화면 터치 인식이 안되는 것이었다.
여러가지 방법을 시도해보았지만 실패했고, 해결방법은 생각보다 간단했다.
스크롤 뷰에서 스크롤이 시작되면 자동으로 키보드를 숨겨주는 함수가 있었다!
var keyboardDismissMode: UIScrollView.KeyboardDismissMode { get set }
위 함수를 사용하여 아래와 같이 설정해주면, 화면 스크롤 시 자동으로 키보드가 사라진다.
collectionView.keyboardDismissMode = .onDrag
tableView.keyboardDismissMode = .onDrag
728x90
반응형