UIAlertView Vs UIAlertController - без клавиатуры в iOS 8
У меня есть старый проект Xcode, предназначенный для iOS 6 и выше. Недавно я открыл его в Xcode 6 и работал в симуляторе iPhone 6 для iOS 8. Когда я пробовал это действие
UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Enter Folder Name"
message:@"Keep it short and sweet"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
dialog.alertViewStyle = UIAlertViewStylePlainTextInput;
dialog.tag = 400;
[dialog show];
Я получаю всплывающее окно, но когда я нажимаю на текстовое поле, клавиатура не появляется. Я googled и прочитал, что мне нужно использовать UIAlertController. Так как мне нужно поддерживать версии iOS 6, 7, поэтому я изменил свой код следующим образом.
if ([UIAlertController class])
{
// use UIAlertController
UIAlertController *alert= [UIAlertController
alertControllerWithTitle:@"Enter Folder Name"
message:@"Keep it short and sweet"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action){
//Do Some action here
UITextField *textField = alert.textFields[0];
NSLog(@"text was %@", textField.text);
}];
UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
NSLog(@"cancel btn");
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:ok];
[alert addAction:cancel];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.placeholder = @"folder name";
textField.keyboardType = UIKeyboardTypeDefault;
}];
[self presentViewController:alert animated:YES completion:nil];
}
else
{
// use UIAlertView
UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Enter Folder Name"
message:@"Keep it short and sweet"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
dialog.alertViewStyle = UIAlertViewStylePlainTextInput;
dialog.tag = 400;
[dialog show];
}
Опять же, если я попробую сделать то же самое действие НЕТ клавиатура.
Является ли это ошибкой в симуляторе Xcode 6 или я что-то делаю неправильно?
![enter image description here]()
Ответы
Ответ 1
Я протестировал это, если iOS8 обнаруживает аппаратную клавиатуру, чем не открывает клавиатуру. Как вы можете тестировать в симуляторе, так что это не отображение любой клавиатуры
Нажмите "Command" + "k", и вы сможете увидеть клавиатуру.
При тестировании на устройстве вы не столкнетесь с этой проблемой, если пользователь не подключил свое устройство с помощью аппаратной клавиатуры Bluetooth, так что вам не о чем беспокоиться.
Надеюсь, что это поможет
Ответ 2
Другой способ увидеть клавиатуру - установить тип клавиатуры. Это может быть пример кода:
UIAlertController* alertController = [UIAlertController
alertControllerWithTitle:@"Test"
message:@"Testing keyboard"
preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler: ^(UITextField *tf)
{
tf.autocorrectionType = UITextAutocorrectionTypeYes;
tf.keyboardType = UIKeyboardTypeDefault;
}];
[self presentViewController:alertController animated:YES completion:nil];
Затем вы увидите клавиатуру симулятора, когда вы покажете AlertController