gpt4 book ai didi

ios - 在 UICollectionViewController 的搜索栏中隐藏键盘

转载 作者:搜寻专家 更新时间:2023-11-01 06:41:50 27 4
gpt4 key购买 nike

虽然我的问题看起来很容易解决,但我自己做不到。

基本上我得到了我的 CollectionViewController 来保存我的所有数据,我在其中包含一个搜索栏,它根据用户写的内容从我的集合中过滤项目。

当用户点击任何项目时,它会将他们带到另一个 View 等。

当用户点击搜索栏时,键盘会出现,我想在用户决定点击其他地方时隐藏它。

虽然我可以做到,但事实证明,每次我用我找到的方法隐藏键盘时,它也会阻止用户进一步进入我的应用程序,事实上,点击后不再可能转到另一个 View 他们。

这是我做的:

我的 CollectionViewController.swift

override func viewDidLoad() {
super.viewDidLoad()

// Setup search bar/collection view
self.collectionView?.dataSource = self
searchBar.delegate = self
searchBar.sizeToFit()
searchBar.placeholder = "Search"
navigationItem.titleView = searchBar

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
}

func dismissKeyboard() {

searchBar.resignFirstResponder()
}

我也试了很多东西发现here没有成功。不知何故,即使我在我的文件中包含了 UIGestureRecognizerDelegate,当我点击某处时,也不会触发列出的一些委托(delegate)。例如,委托(delegate) gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool 不起作用。

我可以看到这里的逻辑,但要找到任何不破坏 Collection View 的修复是不可能的。

感谢任何帮助,谢谢。

最佳答案

Objective-c 和 Swift 请使用以下解决方案,希望它对你有用,亲爱的 swift 创建变量 let tap = UITapGestureRecognizer() 并在 viewDidLoad 方法中编写以下代码。

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}

并粘贴以下代码以进一步实现方法:

func keyboardWillShow(notification: NSNotification) {

tap = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
}
func keyboardWillHide(notification: NSNotification) {
view.removeGestureRecognizer(tap)
}

(Objective-c) 首先创建 UITapGestureRecognizer *tap 变量并在 viewDidLoad 方法中粘贴下面的代码。

//Notifications for keyBoardShow and keyBoradHide 
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];

并粘贴以下代码:

- (void)keyboardWillShow:(NSNotification *)notif {
//Add tap gesture here
tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];

[self.view addGestureRecognizer:tap];
}
- (void)keyboardWillHide:(NSNotification *)notif {
//Remove tap gesture
[self.view removeGestureRecognizer:tap];
}
-(void)dismissKeyboard {
[yourSearchBar resignFirstResponder];
}

@CroiSciento 亲爱的检查这个解决方案。

关于ios - 在 UICollectionViewController 的搜索栏中隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com