我尝试了一个非常简单的例子。我在视图控制器的视图中添加了一个文本视图和一个按钮。按下按钮时,它会显示带有文本字段的警报视图。
我的问题如下:
假设我正在编辑文本视图并按下按钮以显示警报视图。键盘将首先解除(文本视图辞职第一响应者)然后再次出现(文本字段成为第一响应者)。这真的很烦人。我想知道我是否可以做某些事情,这样当我从文本视图切换到文本字段时,键盘不会被忽略和停留。谢谢大家。
以下是这个简单示例的一些代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Text view
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];
textView.backgroundColor = [UIColor greenColor];
[self.view addSubview:textView];
// Button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100,500, 200, 100);
[button setTitle:@"Show alert view" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
-(void)buttonPressed {
UIAlertController *ac = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
[ac addAction:cancelAction];
[ac addTextFieldWithConfigurationHandler:^(UITextField *textField) {}];
[self presentViewController:ac animated:YES completion:nil];
}
答案 0 :(得分:0)
基于这个答案:Keyboard hide and show again...
我认为您可以在.m文件的末尾添加这些行,它应该可以完成这项工作!
// UI AlertController Category
@interface UIAlertController (NonFirstResponder)
@end
@implementation UIAlertController (NonFirstResponder)
- (BOOL)canBecomeFirstResponder
{
return NO;
}
@end
// UIAlertAction Category
@interface UIAlertAction (NonFirstResponder)
@end
@implementation UIAlertAction (NonFirstResponder)
- (BOOL)canBecomeFirstResponder
{
return NO;
}
@end
答案 1 :(得分:-1)
实施UITextFieldDelegate Protocol
并将此方法添加到您的控制器:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
return NO;
}
这可以防止键盘被解雇。