如何在 iOS 中找到选定的文本字段

Posted

技术标签:

【中文标题】如何在 iOS 中找到选定的文本字段【英文标题】:How to find the selected text field in iOS 【发布时间】:2014-06-25 06:40:41 【问题描述】:

我正在使用情节提要开发一个 iPad 应用程序。在我的应用程序中,我有一个带有两个文本字段和一个按钮的弹出视图。我需要做什么意味着如果我单击按钮,则需要在所选文本框中显示一个文本.我如何找到在当前情况下选择了哪个文本框?示例代码如下请帮助我完成功能。

- (IBAction)buttonPressed:(id)sender 
     if(//Here i need to set the condition for check selected text box is first)
         texbox1.text=@"User";
      
      else
         textbox2.text =@"Admin";
      

【问题讨论】:

如果刚刚按下按钮,如何选择文本字段? @***foe 我为每个文本字段创建 ib 操作。并设置标志。此方法正确吗?有任何短方法可用吗? 您的问题对您想要实现的目标感到困惑。如果按下按钮,则(以前的“已选择”)文本字段将被取消选择。所以请解释得更清楚。 【参考方案1】:
- (IBAction)buttonPressed:(id)sender 

   if([textbox1 isFirstResponder])
       //Cursor on textbox1
       texbox1.text=@"User";
   
   else if([textbox2 isFirstResponder])
      //Cursor on textbox2
       textbox2.text =@"Admin";
   
   else

       NSLog(@"None of them have cursor");
   

【讨论】:

如果按下按钮,不会成为第一响应者吗? @vijay 谢谢...您的答案对我有用。我标记为正确答案。 @***foe 那么当我们点击按钮时键盘会自动退出吗?不是! @Vijay-Apple-Dev.blogspot.com 我又提出了一个问题,请您帮我解决这个问题。 ***.com/questions/24446429/… @Vijay-Apple-Dev.blogspot.com ***.com/questions/25376689/… 帮我解决这个问题【参考方案2】:

    Tag 设置为您的textfields

    在你的课堂上实现UITextFieldDelegate

    使用这个方法

    - (void)textFieldDidBeginEditing:(UITextField *)textField 
        if (textField.tag == your tag) 
            selectedTextField = textField; //selectedTextField is an UITextfield variable
        
    
    

    在你的IBAction中使用它

    - (IBAction)buttonPressed:(UIButton *)sender 
        selectedTextField.text = @"abc";
    
    

//编辑:***的代码功能有问题,无法正常显示

【讨论】:

这个答案缺少重要的细节;例如设置委托以及委托方法中的操作。 @Pham 请解释你的答案。我如何为字段设置文本? 重新检查,在完成我的答案之前我误点击了帖子 +1 我相信这是正确的方法。当按下按钮 it 将成为第一响应者,因此测试当前第一响应者的解决方案将失败。其他注意事项:当视图可见时,您可能希望确保 selectedTextField 被初始化为第一个文本字段。【参考方案3】:

如果我正确理解你的问题,我认为下面的代码就是你想要的:-

- (IBAction)buttonPressed:(UIButton *)sender 

    if(self.texbox1.isFirstResponder)
        self.texbox1.text=@"User";
        [self.texbox1 resignFirstResponder];
    

    if(self.texbox2.isFirstResponder)
        self.texbox2.text=@"Admin";
        [self.texbox2 resignFirstResponder];
    

我不确定你为什么要像上面那样实现,因为它有点好笑。

【讨论】:

如果按下按钮,不会成为第一响应者吗? 据我了解,他/她想在按下按钮时在“选定”文本字段上显示文本。我认为他/她所说的“被选中”是指第一受访者。因此,我的回答如上。【参考方案4】:

UITextFieldUIResponder 的子类,它允许您执行包括isFirstResponder 在内的检查,这可能是您正在寻找的。但是,您需要了解响应者链的工作原理以及这是否真的是您要检测的行为。

【讨论】:

【参考方案5】:

使用 isFirstResponder 检查哪个文本框处于活动状态。

- (IBAction)buttonPressed:(id)sender 
     if([textbox1 isFirstResponder])
         texbox1.text=@"User";
      
      else if([textbox2 isFirstResponder]) 
         textbox2.text =@"Admin";
       else 
         // What should happen when neither textbox1 nor textbox2 is active?
      

【讨论】:

以上是关于如何在 iOS 中找到选定的文本字段的主要内容,如果未能解决你的问题,请参考以下文章

如何修改文本字段数组中选定的 UITexFiled 值

为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)

如何将选定的 JComboBox 数据项提取到 Swing 文本字段中?

如何根据 b-form-select 中的选定值禁用/启用文本字段?

如何使用 Outlook 2013 在电子邮件中附加下拉选定字段数据

如何使用javascript使两个选定的索引在pdf下拉列表中匹配