【问题标题】:Disable Button until all textfields have been Filled Xcode禁用按钮,直到所有文本字段都已填充 Xcode
【发布时间】:2015-07-15 13:59:00
【问题描述】:

我到处寻找这个答案,但我没有得到一个简单易懂的答案。在点击并提交之前,我需要填写 8 个文本字段,然后才能进入下一页。我已经连接了每个文本字段以查看 controller.h 文件,但我不知道如何一步一步轻松地禁用提交按钮。非常感谢您提前提供的帮助。

我在以前的帖子中尝试过这个,但我无法让它工作..

为每个 UITextField 创建一个 Outlet 并在您的 .h 中创建一个 IBAction:

IBOutlet UITextField *textField1;
IBOutlet UITextField *textField2;
IBOutlet UITextField *textField3;
IBOutlet UIButton *button

- (IBAction)editingChanged;

使用editingChanged连接所有出口并将IBAction连接到每个文本字段:

 - (IBAction)editingChanged {
    if ([textfield1.text length] != 0 && [textfield2.text length] != 0 && [textfield3.text length] != 0) {
         [button setEnabled:YES];
     }
     else {
         [button setEnabled:NO];
     }
 }

请注意,您也可以使用 [textfield.text isEqualToString:@""] 并加上 !在它前面(在objective-c中表示'not')来识别空的textField,并说'如果textField是空的......'

- (void)viewDidLoad {
    [super viewDidLoad];
    [button setEnabled:NO];
}

【问题讨论】:

  • 为什么这不起作用?发生了什么?
  • 我只是迷路了。那么连接所有出口并将每个文本字段的不作为与editingChanged连接是什么意思?
  • 您要连接哪个事件到 editingChanged?
  • 这就是我感到困惑的部分。这些指示在不同的帖子中,我试图遵循,但我迷路了。所以第一。在视图 controller.h 文件的接口部分中制作 IBAction,然后我就迷路了..

标签: ios xcode uitextfield


【解决方案1】:

试试这个,

1) 您需要将 textfiled 委托函数添加到所有 textfiled。

.h

@interface ViewController : UIViewController <UITextFieldDelegate>

.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    //set submit button disable
    submitbtn.enable=NO

   textfiled1.delegate = self;
   textfiled2.delegate = self;
   textfiled3.delegate = self;
   textfiled4.delegate = self;
   textfiled5.delegate = self;
   textfiled6.delegate = self;
   textfiled7.delegate = self;
   textfiled8.delegate = self;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
  //check your all texfield length if not equal to zero in below if(condition)
   if(alltextfiled_length != 0)
   {
     submitbtn.enable=YES
   }
   else
   {
     submitbtn.enable=NO
   } 
}

【讨论】:

  • submitbtn 是 .h 区域中的 ib 操作正确吗?还是我也必须在 .h 文件中创建一个出口?
  • @Neil,在 .h 文件中创建一个插座。
  • 我面临的问题是它不允许我正确引用 textfield_length。就像我的 UITextField 被称为“Card_number”一样,它不允许我输入“Card_number_length”..
  • @Neil,我不是说 alltextfiled_length 是 obj-c 代码,我只是说逻辑,K 可以将 (alltextfiled_length) 替换为 (yourtextfield.text.length !=0)
  • @Neil,检查第一个 textFieldDidEndEditing 函数是否工作
【解决方案2】:

我建议您阅读有关连接插座的documentation

要处理文本字段中的更改,您的视图控制器类可以符合UITextFieldDelegate 协议,将您的视图控制器分配为每个文本字段的代表,并实现- (BOOL)textFieldShouldReturn:(UITextField *)textField,当点击返回按钮时将调用它每个文本字段的键盘。

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2018-01-22
    • 2016-03-03
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多