Phương pháp này cho phép bạn ẩn bàn phím trên các phím cách !
Đầu tiên hãy thêm chức năng này (Tín dụng được cấp cho: Casper Zandbergen, từ SwiftUI không thể khai thác trong Spacer của HStack )
extension Spacer {
public func onTapGesture(count: Int = 1, perform action: @escaping () -> Void) -> some View {
ZStack {
Color.black.opacity(0.001).onTapGesture(count: count, perform: action)
self
}
}
}
Tiếp theo, thêm 2 chức năng sau (Credit Given To: rraphael, từ câu hỏi này)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
Hàm bên dưới sẽ được thêm vào lớp View của bạn, chỉ cần tham khảo câu trả lời hàng đầu tại đây từ rraphael để biết thêm chi tiết.
private func endEditing() {
UIApplication.shared.endEditing()
}
Cuối cùng, bây giờ bạn có thể chỉ cần gọi ...
Spacer().onTapGesture {
self.endEditing()
}
Điều này sẽ làm cho bất kỳ vùng đệm nào đóng bàn phím ngay bây giờ. Không cần phải xem nền trắng lớn nữa!
Theo giả thuyết, bạn có thể áp dụng kỹ thuật này extension
cho bất kỳ điều khiển nào bạn cần để hỗ trợ TapGestures hiện không làm như vậy và gọi onTapGesture
hàm kết hợp với self.endEditing()
để đóng bàn phím trong bất kỳ tình huống nào bạn muốn.