单击按钮时如何获取 UITextField 值

Posted

技术标签:

【中文标题】单击按钮时如何获取 UITextField 值【英文标题】:How to get UITextField values when button is clicked 【发布时间】:2011-08-12 00:21:58 【问题描述】:

我有这样的看法:

以及这些实现:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [self.tableLogin dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        if ([indexPath section] == 0) 
            UITextField *textfield = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 165, 30)];
            textfield.adjustsFontSizeToFitWidth = YES;
            textfield.textColor = [UIColor blackColor];
            textfield.backgroundColor = [UIColor whiteColor];
            textfield.autocorrectionType = UITextAutocorrectionTypeNo;
            textfield.autocapitalizationType = UITextAutocapitalizationTypeNone;
            textfield.textAlignment = UITextAlignmentLeft;
            textfield.clearButtonMode = UITextFieldViewModeNever;
            textfield.delegate = self;

            if ([indexPath row] == 0) 
                textfield.tag = 0;
                textfield.placeholder = @"your username";
                textfield.keyboardType = UIKeyboardTypeDefault;
                textfield.returnKeyType = UIReturnKeyNext;
            
            else 
                textfield.tag = 1;
                textfield.placeholder = @"required";
                textfield.keyboardType = UIKeyboardTypeDefault;
                textfield.returnKeyType = UIReturnKeyDone;
                textfield.secureTextEntry = YES;
            

            [textfield setEnabled:YES];
            [cell addSubview:textfield];
            [textfield release];
        
    
    if ([indexPath section] == 0) 
        if ([indexPath row] == 0) 
            cell.textLabel.text = @"Email";
        
        else 
            cell.textLabel.text = @"Password";
        
    

    return cell;    


- (BOOL)textFieldShouldReturn:(UITextField *)textField

    switch (textField.tag) 
        case 0:
            self.username = textField.text;
            break;
        case 1:
            self.password = textField.text;
            break;
    
    return true;

当用户点击登录按钮而不点击“完成”关闭键盘时,它不会保存字段值。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

两种选择:

保留对两个文本字段的引用并在“完成”按钮的操作方法中提取它们的 text 值。

或者,注册UITextFieldTextDidChangeNotification 并在输入发生时捕获输入。

【讨论】:

UITextFieldTextDidChangeNotification 是什么?我什么都找不到。 为 UITextField 定义的通知名称。你可以这样注册:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:textField]; 文档 奇怪地稀少。此 PDF 的第 22 页列出了该类支持的所有通知:developer.apple.com/library/ios/documentation/uikit/reference/… [textfield addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 有什么变化?哪个更好? 哦,有趣,我想这也行。不知道,试试两个,看看哪个更适合你。只要你得到你正在寻找的数据,任何一种方法似乎都是合理的。【参考方案2】:

除了按回车键之外,您还可以使用- (void)textFieldDidEndEditing:(UITextField *)textField 并将您的值保存在那里。

【讨论】:

我自己做了一个改变,使用 IBAction 而不是 void。 -(IBAction)textFieldDidEndEditing:(UITextField *)textField 我将“编辑更改”事件引用到此操作。像魅力一样工作。

以上是关于单击按钮时如何获取 UITextField 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 UITableView 单元格上获取 UITextField 值

如何在按钮单击时获取当前 *ngFor 值?

如何在单击提交按钮时获取复选框值?

iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值

如何在模式内单击按钮时使用 jQuery 或 javascript 获取引导模式的数据值?

如何在单击角度7中的按钮时获取下拉列表的选定值和选定文本[重复]