如何从textFieldDidEndEditing获取文本?

时间:2015-10-05 10:09:15

标签: ios objective-c

可能是一个简单的答案,

如何从其中包含文本字段的UIAlertView传递dimvec(i)

textField.text

我尝试创建一个属性NSString并使其等于-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex并尝试textField.text它并且它返回NSLog

3 个答案:

答案 0 :(得分:3)

更新答案

要检索UIAlertView中文本字段的文本,您可以使用textFieldAtIndex:方法。您根本不需要参与文本字段委托。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    UITextField *textField = [alertView textFieldAtIndex:0]; // adjust the index if you have more than one text field.

    NSLog(@"Text: %@", textField.text);
}

原始答案

<击> 你有几个选择。

选项1

将对文本字段的引用存储为属性,您似乎已经在这样做了。

@property (nonatomic, weak) IBOutlet UITextField *textField;

然后可以直接从UIAlertView委托方法访问它,假设委托是具有对文本字段的引用的同一对象:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"Text: %@", self.textField.text);
}

选项2

如果由于某种原因您没有引用文本字段,可以从textFieldDidEndEditing:委托方法获取,首先创建一个属性来存储文本:

@property (nonatomic, copy) NSString *textFieldText;

然后在调用文本字段委托方法时更新。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    self.textFieldText = textField.text; 
}

然后,您可以使用UIAlertView委托方法访问此媒体资源:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"Text: %@", self.textFieldText);
}

<击>

答案 1 :(得分:1)

此代码对我有用:

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"" message:[NSString stringWithFormat:@"Do you want to call?"] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeNumberPad;
[alertTextField setTextAlignment:NSTextAlignmentCenter];
[alert show];

和代表:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex==1) {
    return;
}
UITextField *title1;// = [alertView textFieldAtIndex:0];

title1= [alertView textFieldAtIndex:0];
NSString *messageStr = title1.text;

if ([messageStr isEqualToString:@""]) {
    return;
}}

答案 2 :(得分:0)

你只需要声明NSString对象     @interface LoginDialogVC()     {         NSString strText;     }     @end

@implementation LoginDialogVC
-(void)textFieldDidEndEditing:(UITextField *)textField {
    strText = textField.text;
}

之后,只要你想使用它就使用strText。