我对Objective-C的经验不多.我想使用Swift编程语言隐藏文本字段的键盘.
我也尝试过这个
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是当我点击返回时,该方法不会被触发.有人有运气吗?
我正在我的应用程序的导航栏中创建一个UISearchBar选项.我的应用包含多个视图和子视图.我有这个主视图,其他3个观点.其中一个是空的(现在),另外两个有关于它们的表格视图.
当我正在进行实际搜索或者在uisearchbar外触摸/点击时,我希望我的键盘能够在我搜索和隐藏时显示.我根据需要使用searchbardelegate.
我可以通过以下方式使用[searchBar resignFirstResponder]隐藏键盘.
当我触摸屏幕的空白部分时
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) {
[mySearchBar resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)我似乎无法做的是让它回应我的2个表格中的一个.或者当我重新填充主视图以包含完全不同的东西时.
我曾尝试更改touchesbegan方法以在触摸tableviews时重新调整搜索栏,但它到目前为止还没有工作.
亲爱的朋友先生,我已经尝试了其他几件事.谷歌,但这似乎是我需要的其他东西.
任何人都有任何想法,我可以做些什么来解决这个问题?
编辑:看来这样,当使用断点时,touchesbegan-method会响应backgroundview但当我触摸其中一个tableviews或导航栏(包含uisearchbar)时它不会响应.
如标题中所述,我有兴趣在搜索栏外单击时从搜索栏中取消键盘.类似的问题在touchesBegan中使用了self.view.endEditing(true),但我没有运气.我不确定我是否遗漏了其他任何东西,或者我是否正确设置了我的搜索栏.
import UIKit
import MapKit
class AddressVC: UIViewController {
@IBOutlet weak var searchBar: UISearchBar!
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
@IBOutlet weak var searchResultsTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
// Do any additional setup after loading the view, typically from a nib.
searchResultsTableView.isHidden = true
searchCompleter.delegate = self
}
extension AddressVC: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchCompleter.queryFragment = searchText
}
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
self.searchBar.endEditing(true)
searchBar.resignFirstResponder() …Run Code Online (Sandbox Code Playgroud)