@implementation
UIAlertView *query;
@end
- (void)viewWillAppear:(BOOL)animated {
query = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"New", @"")
message:nil
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", nil)
otherButtonTitles:NSLocalizedString(@"OK", @""), nil];
query.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *textField = [_query textFieldAtIndex:0];
textField.placeholder = NSLocalizedString(@"Title", @"placeholder text where user enters name for new playlist");
textField.delegate = self;
[_query show];
}
Run Code Online (Sandbox Code Playgroud)
后UIAlertView显示,键盘也显示并UITextfield是焦点(这只是工作预iOS7,但在iOS8上不工作).我试过了[textfield becomeFirstResponder],但它没有用.我创建新项目并使用上面的海湾,它的工作原理.
我的问题:键盘没有显示UIAlertViewStylePlainTextInput样式.
我不知道为什么?任何人都可以帮助我吗?谢谢.
cet*_*cet 18
这是陈琳的黑客/修复的一个小改进,放在UIAlertViewDelegate中:
- (void)didPresentAlertView:(UIAlertView *)alertView {
if (isIOS8) {
// hack alert: fix bug in iOS 8 that prevents text field from appearing
UITextRange *textRange = [[alertView textFieldAtIndex:0] selectedTextRange];
[[alertView textFieldAtIndex:0] selectAll:nil];
[[alertView textFieldAtIndex:0] setSelectedTextRange:textRange];
}
}
Run Code Online (Sandbox Code Playgroud)
(您必须实现isIOS8方法,属性或iVar.)
小智 10
在调用show之后,这个丑陋的黑客为我工作了:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// HACKHACK: This is to make the keyboard appear in iOS8
UITextRange* textRange = self.textField.selectedTextRange;
[self.textField selectAll:self];
[UIMenuController sharedMenuController].menuVisible = NO;
self.textField.selectedTextRange = textRange;
});
Run Code Online (Sandbox Code Playgroud)
遇到同样的问题,并花了几个小时摆弄UIAlertController,这是"正确的"解决方案,但不幸的是在其他地方有几个问题(例如,当从弹出窗口呈现时它会中断),并且不适用于iOS7.
这绝对是iOS8中的一个错误.我希望Apple尽快解决这个问题.不幸的是,它甚至打破了为iOS7编译的旧二进制文件.
| 归档时间: |
|
| 查看次数: |
4929 次 |
| 最近记录: |