我有相当多的控件分散在我的表格中的许多表格单元格中,我想知道是否有一种更简单的方法来消除键盘,而不必循环遍历所有的控件并将它们全部辞职为第一响应器。我想问题是…我如何得到当前的第一个响应器的键盘?
当前回答
从UITableView和UIScrollView中取消键盘的最好方法是:
tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag
其他回答
@Nicholas Riley &@Kendall Helmstetter Geln & @cannyboy:
绝对的辉煌!
谢谢你!
考虑到你和其他人在这篇文章中的建议,以下是我所做的:
使用时的样子:
[[self appDelegate]解聘键盘];(注意:我添加了appDelegate作为NSObject的补充,所以我可以在任何地方使用任何东西)
引擎盖下的样子:
- (void)dismissKeyboard
{
UITextField *tempTextField = [[[UITextField alloc] initWithFrame:CGRectZero] autorelease];
tempTextField.enabled = NO;
[myRootViewController.view addSubview:tempTextField];
[tempTextField becomeFirstResponder];
[tempTextField resignFirstResponder];
[tempTextField removeFromSuperview];
}
EDIT
修正我的回答包括tempTextField。enabled = NO;。禁用文本字段将阻止UIKeyboardWillShowNotification和UIKeyboardWillHideNotification键盘通知发送,如果你在整个应用程序中依赖这些通知。
最简单的方法是调用方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if(![txtfld resignFirstResponder])
{
[txtfld resignFirstResponder];
}
else
{
}
[super touchesBegan:touches withEvent:event];
}
你应该发送enditing:到工作窗口作为UIView的子类
[[UIApplication sharedApplication].windows.firstObject endEditing:NO];
更好的方法是让某些东西“窃取”第一响应者的地位。
因为UIApplication是UIResponder的子类,你可以尝试:
[[UIApplication sharedApplication] becomeFirstResponder]
[[UIApplication sharedApplication] resignFirstResponder]
如果做不到这一点,创建一个新的UITextField与一个零大小的框架,将它添加到一个视图的某处,并做一些类似的事情(成为后跟辞职)。
您可以递归地遍历子视图,存储所有UITextFields的数组,然后循环遍历它们并重新分配它们。
这并不是一个很好的解决方案,特别是当你有很多子视图时,但对于简单的应用程序来说,它应该是可行的。
我用一种更复杂,但更高效的方式解决了这个问题,但使用了我的应用程序的动画引擎的单例/管理器,任何时候一个文本字段成为响应器,我会将它分配给一个静态,它会根据某些其他事件被清除(辞职)…我几乎不可能用一段话解释清楚。
要有创意,在我发现这个问题后,我只花了10分钟就考虑了这个问题。
推荐文章
- Xcode构建失败“架构x86_64未定义的符号”
- 动态改变UILabel的字体大小
- registerForRemoteNotificationTypes: iOS 8.0及以上版本不支持
- 新的自动引用计数机制是如何工作的?
- 如何测试对象在Objective-C中的类?
- 是否有可能禁用浮动头在UITableView与UITableViewStylePlain?
- 从Cocoa应用程序执行一个终端命令
- Swift编译器错误:“框架模块内的非模块化头”
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)
- 调整UITableView的大小以适应内容
- 在代码中为UIButton设置一个图像
- UICollectionView中的单元格间距
- 我如何在我的iOS应用程序中每n分钟得到一个后台位置更新?
- 如何使用UIVisualEffectView来模糊图像?