【问题标题】:How to find the selected text field in iOS如何在 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";
      }
}

【问题讨论】:

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

标签: ios iphone objective-c ipad uistoryboard


【解决方案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 谢谢...您的答案对我有用。我标记为正确答案。
  • @trojanfoe 那么当我们点击按钮时键盘会自动退出吗?不是!
  • @Vijay-Apple-Dev.blogspot.com 我又提出了一个问题,请您帮我解决这个问题。 stackoverflow.com/questions/24446429/…
  • @Vijay-Apple-Dev.blogspot.com stackoverflow.com/questions/25376689/… 帮我解决这个问题
【解决方案2】:
  1. Tag 设置为您的textfields

  2. 在你的课堂上实现UITextFieldDelegate

  3. 使用这个方法

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        if (textField.tag == your tag) {
            selectedTextField = textField; //selectedTextField is an UITextfield variable
        }
    }
    
  4. 在你的IBAction中使用它

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

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

【讨论】:

  • 这个答案缺少重要的细节;例如设置委托以及委托方法中的操作。
  • @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?
          }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-06
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多