【问题标题】:Obj-c - Disable uibutton if textView is empty?Obj-c - 如果 textView 为空,则禁用 uibutton?
【发布时间】:2018-01-28 04:11:42
【问题描述】:

如果 UITextView 使用以下代码为空,我正在尝试禁用我的 uibutton。如果该字段为空,则该按钮将禁用,但是,当我使用以下内容时,如果文本视图中有值,该按钮似乎不会“启用”?知道这是为什么吗?


编辑/更新:我在下面更新了我的代码(问题解决了一半)。在这种情况下,如果文本视图为空,我的发送按钮将被禁用。但是,一旦我的视图中有文本并按下发送,如果我再次点击发送(文本视图再次为空),发送按钮将不再被禁用。为什么是这样?

     - (void)viewDidLoad {

        [super viewDidLoad];

            self.sendButton.userInteractionEnabled = NO;

         }

- (void)textViewDidChange:(UITextView *)textView {
    self.sendButton.userInteractionEnabled = (textView.text.length > 0);

}

【问题讨论】:

  • 因为您将代码放在 viewDidLoad 中,该代码仅在加载控制器时执行一次。您应该检查 UITextField 委托并了解如何使用它。
  • @Surely 最初,我在 textViewDidBeginEditing 中有它,但仍然没有骰子?
  • 为什么我的问题被否决了?
  • 您的问题解决了一半意味着解决方案有效。第二次不起作用的原因是,如果您手动将 textview 的文本设置为空,则不会触发委托方法,您还需要手动禁用它。并且可能您想使用“setEnabled”方法而不是 userInteractionEnabled。
  • @Surely 你是个天才——完全正确。谢谢你!!有什么建议:我应该如何清除 textview?

标签: ios objective-c uibutton


【解决方案1】:

你必须实现UITextView委托:

- (void)textViewDidChange:(UITextView *)textView {
    sendButton.userInteractionEnabled = (textView.text.length > 0);
}

【讨论】:

  • 超级奇怪 - 有了这个代码,当文本视图中没有文本时我可以点击按钮,但是当视图中有文本时它被禁用?大声笑
  • 这个答案是用swift写的吗? obj-c 需要它。
  • 没有骰子 - 如果 textview 为空,按钮仍然允许我点击它:/
  • 更正(有点):当我第一次点击文本视图时,它是空的,我的按钮被禁用。当我在视图中放置文本时,发送按钮现在已启用。但是,如果我之后立即再次点击发送并且我的文本字段再次为空,它允许我点击发送 - 从视图中清除初始文本后如何再次禁用该按钮?
  • 如果你的textview默认为空,你应该设置sendButton.userInteractionEnabled = FALSE;在你的viewDidLoad
【解决方案2】:

您必须在执行 viewDidLoad 后在 self.replyField 中设置文本。

每当您更改 self.replyField 中的值时,请尝试执行以下代码:

    if (self.replyField.text.length > 0) {
        sendButton.userInteractionEnabled = YES;
    }
    else {
        sendButton.userInteractionEnabled = NO;
    }

您可以使用 isEnabled 代替 userInteractionEnabled

【讨论】:

  • 奇怪的是,当我使用它时,当文本在字段中时发送按钮被禁用......并且当它不是时启用?
  • 如果使用上面的字段中没有文本,则启用该按钮。
【解决方案3】:

你应该实现下面的委托方法来根据文本值启用和禁用按钮

optional func textField(_ textField: UITextField, 
shouldChangeCharactersIn range: NSRange, 
      replacementString string: String) -> Bool {
}

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多