Мне нужно добавить TextField
в UIAlertView
. Я понимаю, что яблоко препятствует такому подходу. Так есть ли какая-нибудь библиотека, которую я мог бы использовать, чтобы добавить кадр TextField
в UIAlertView
?
Добавление TextField в UIAlertView
Ответ 1
Для iOS5:
UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"Title" message:@"Please enter someth" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
av.alertViewStyle = UIAlertViewStylePlainTextInput;
[av textFieldAtIndex:0].delegate = self;
[av show];
Кроме того, вам потребуется реализовать протоколы UITextFieldDelegate
, UIAlertViewDelegate
.
Ответ 2
К сожалению, единственным официальным API для этого является iOS 5 и выше, это свойство с именем alertViewStyle
, которое может быть установлено на следующие параметры:
UIAlertViewStyleDefault
UIAlertViewStyleSecureTextInput
UIAlertViewStylePlainTextInput
UIAlertViewStyleLoginAndPasswordInput
UIAlertViewStylePlainTextInput
- тот, который вы хотите.
Взаимодействие с иерархией представлений, описанной выше, категорически не одобряется Apple.
Ответ 3
Я использую BlockAlertsAndActionSheets вместо компонентов Apple для AlertViews и ActionSheets, поскольку я предпочитаю подход блоков. Также содержит источник BlockTextPromptAlertView
в источнике, который может быть тем, что вы хотите. Вы можете заменить изображения этого элемента управления, чтобы вернуть стиль Apple.
Учебное пособие, которое вы начнете
Пример:
- (IBAction)newFolder:(id)sender {
id selfDelegate = self;
UITextField *textField;
BlockTextPromptAlertView *alert = [BlockTextPromptAlertView promptWithTitle :@"New Folder"
message :@"Please enter the name of the new folder!"
textField :&textField];
[alert setCancelButtonWithTitle:@"Cancel" block:nil];
[alert addButtonWithTitle:@"Okay" block:^{
[selfDelegate createFolder:textField.text];
}];
[alert show];
}
- (void)createFolder:(NSString*)folderName {
// do stuff
}
Ответ 4
Попробуйте что-то вроде этого:
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Title"
message:@"\n\n"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Save", nil] autorelease];
CGRect rect = {12, 60, 260, 25};
UITextField *dirField = [[[UITextField alloc] initWithFrame:rect] autorelease];
dirField.backgroundColor = [UIColor whiteColor];
[dirField becomeFirstResponder];
[alert addSubview:dirField];
[alert show];
Ответ 5
Начиная с iOS 8 UIAlertView
устарел в пользу UIAlertController
, который добавляет поддержку добавления UITextField
с помощью метода:
- (void)addTextFieldWithConfigurationHandler:(void (^)(UITextField *textField))configurationHandler;
См. этот ответ для примера.
Ответ 6
Вы можете попробовать:
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Your title here!" message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:testTextField];
[myAlertView show];
[myAlertView release];
Подробнее см. .
Ответ 7
сначала добавить UIAlertViewDelegate в файл ViewController.h, например
#import <UIKit/UIKit.h>
@interface UIViewController : UITableViewController<UIAlertViewDelegate>
@end
а не Add Below Code, где вы хотите оповестить Дисплей,
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title"
message:@"Message"
delegate:self
cancelButtonTitle:@"Done"
otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
и он делегирует метод, который возвращает ввод UItextField
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"%@", [alertView textFieldAtIndex:0].text);
}
Ответ 8
отсылайте это... http://iosdevelopertips.com/undocumented/alert-with-textfields.html это частный api, и если вы используете его для приложения в appstore, он может получить отвергнуты, но это нормально для развития предприятия.
Ответ 9
добавив ответ от "Shmidt", код для ввода текста, введенного в UIAlertView, вставлен ниже (спасибо "Wayne Hartman" Получение текста из UIAlertView)
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
self.userNumber = [alertView textFieldAtIndex:0].text;
if (self.userNumber) {
// user enetered value
NSLog(@"self.userNumber: %@",self.userNumber);
} else {
NSLog(@"null");
}
}
}