Thứ nhất, UISearchBarDelegate của Apple là giải pháp đúng để ẩn bàn phím khi người dùng nhấp vào nút tìm kiếm trong khi dụ UISearchBar 's là first responder
(tìm hiểu UIResponder). Tóm lại, searchBarSearchButtonClicked(_:) là những gì bạn cần cho công việc này.
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder() // hides the keyboard.
doThingsForSearching()
}
Nếu nó không hoạt động, kiểm tra, không điều khiển của bạn phù hợp với UISearchBarDelegate
và thứ hai, không UISearchBarDelegate
biết về thực hiện lớp học của bạn (nếu bạn không hoàn toàn hiểu những gì tôi nói về, bạn nên tìm hiểu delegation pattern
bắt đầu đọc here):
class YourAwesomeViewController: UIViewController, UISearchBarDelegate { // pay attention here
@IBOutlet weak var yourSearchBar: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
self.yourSearchBar.delegate = self // and it's important too
}
}
Hơn nữa, nếu bạn cần để ẩn bàn phím chạm vào bên ngoài của search bar
mà không cần chạm vào nút tìm kiếm (người dùng có thể chang e tâm trí của mình để tìm kiếm một cái gì đó), UITapGestureRecognizer là một cách đơn giản để đối phó với điều đó.
Ctrl-drag
a Tap Gesture Recognizer
từ Object Library
vào Trình điều khiển chế độ xem của bạn.
Ctrl-drag
gần đây thêm Tap Gesture Recognizer
từ document outline
trong kịch bản để thực hiện lớp học của bạn như IBAction
.
- Cuối cùng, hãy viết một mã số:
@IBAction func tapToHideKeyboard(_ sender: UITapGestureRecognizer) { self.yourSearchBar.resignFirstResponder() }
Ngoài ra, đừng quên tạo@IBOutlet
cho thanh tìm kiếm để có quyền truy cập bên trong việc triển khai lớp học của bạn.
Cả hai biến thể trên đều hoạt động tốt trong dự án của tôi.
Bạn có thể tìm câu trả lời trong các liên kết dưới đây: http://stackoverflow.com/questions/24908966/hide-keyboard-for-text-field-in-swift-programming-language –
tôi đã cố gắng mà nên tôi nhận được mã của tôi cho textfield và nó hoạt động hoàn toàn tốt như những gì tôi nói, nhưng tôi có một số vấn đề khi tôi phải sử dụng thanh tìm kiếm, bởi vì tôi không thể làm cho bàn phím của tôi bị sa thải khi tôi chạm vào một khu vực khác ngoài thanh tìm kiếm của tôi – aji