sol*_*eil 5 uiscrollview uiviewcontroller first-responder ios uicollectionview
有一些答案在那里如此,但在那里有一个情况UIScrollView还是UICollectionView存在,这是行不通的.
在touchesBegan对方法viewController永远不会被调用.
在屏幕上,我有一个UITextField在顶部.
在此之下,填满屏幕的其余部分是一个UICollectionView.
如果我触摸除了UITextField(显然包括集合视图)之外的任何地方我需要关闭键盘
那么最好的方法是什么?
对于这样一个常见的UI范例,似乎应该有一个众所周知的解决方案,但我还没有碰到它.
要在点击视图时关闭键盘:将点击手势添加到 ViewController.collectionView 中,如下所示:
//declare a property to store your current responder
@property (nonatomic, assign) id currentResponder;
//in viewDidLoad:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignOnTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self.collectionView addGestureRecognizer:singleTap];
//Implement the below delegate method:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currentResponder = textField;
}
//Implement resignOnTap:
- (void)resignOnTap:(id)sender {
[self.currentResponder resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3111 次 |
| 最近记录: |