模式对话框不会消除键盘
我遇到了一个问题,在UIModalPresentationFormSheet
留下UITextField
或UITextView
时,键盘不会被解散。 另外,我已经创build了一个大的button来作为视图的背景,所以如果用户在触发的字段之外轻击。 我在常规的视图控制器中使用相同的代码,并按预期工作。 在模态视图控制器中,它什么都不做。 任何build议,将不胜感激。
- (BOOL)textFieldShouldReturn:(id)sender { [titleTextField resignFirstResponder]; return YES; } - (BOOL)textViewShouldReturn:(id)sender { [synopsisTextView resignFirstResponder]; return YES; } - (IBAction)textFieldDoneEditing:(id)sender { [sender resignFirstResponder]; } - (IBAction)textViewDoneEditing:(id)sender { [sender resignFirstResponder]; } - (IBAction)backgroundClick:(id)sender { [titleTextField resignFirstResponder]; [synopsisTextView resignFirstResponder]; }
覆盖disablesAutomaticKeyboardDismissal
返回NO如下固定我的同样的问题。 你应该把这个代码放到你的视图控制器中,从中你启动键盘:
- (BOOL)disablesAutomaticKeyboardDismissal { return NO; }
另外,如果你想得到一个详细的解释,检查这个SO问题。
对于那些有UINavigationController
麻烦,我认为有一个比UIViewController
类别更好的解决scheme。 我们应该改变UINavigationController
的行为来询问它的topViewController
(在我看来,这是所有ViewController
容器应该如何处理的)。
@implementation UINavigationController (DelegateAutomaticDismissKeyboard) - (BOOL)disablesAutomaticKeyboardDismissal { return [self.topViewController disablesAutomaticKeyboardDismissal]; }
如果您用演示风格“表单”来呈现模态视图,那么苹果公司显然不会放弃键盘,认为他们不希望键盘跳入和跳出用户将进行大量编辑的位置。 “forms”)。 解决办法是改变演示风格或与之共存。
我通过调整UIModalPresentationPageSheet来解决这个问题。 在这里看到我的答案。
disablesAutomaticKeyboardDismissal
拒绝为我在iOS 7上工作。
但是…我设法通过简单地禁用屏幕上的UITextFields来解决这个问题。
这里描述我的解决scheme。
这种解决方法甚至适用于Modal UIViewController
。
是的,这让我感到惊讶!
如果您实现UITextFieldDelegate协议,则可能会在执行文本validation时无意中导致此行为。 如果您的validation码在文本无效时从textFieldShouldEndEditing返回false,则该字段不能放弃它的firstResponder状态,并且键盘将在下一个视图中保留在屏幕上。
在UITextField的键盘上的更多细节不会消失。 不完全是
- 原型细胞在笔尖而不是故事板
- 我怎样才能安全地删除我的〜/ Library / Developer / Xcode / DerivedData目录?
- 按单元分页UICollectionView,而不是屏幕
- iOS应用程序在后台执行任务
- UIRefreshControl – 当UITableViewController位于UINavigationController中时,beginRefreshing不工作
- 什么是用于iOS应用程序启animation面的大小?
- iOS 5的Twitter框架:Tweeting没有用户input和确认(模态视图控制器)
- 使用Swift获取版本和构build信息
- 我如何检索iOS上的UDID?