Obj-c - 如果 textView 为空,则禁用 uibutton?

Posted

技术标签:

【中文标题】Obj-c - 如果 textView 为空,则禁用 uibutton?【英文标题】:Obj-c - Disable uibutton if textView is empty? 【发布时间】: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? 【参考方案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 

【讨论】:

以上是关于Obj-c - 如果 textView 为空,则禁用 uibutton?的主要内容,如果未能解决你的问题,请参考以下文章

android TextView怎么能不能为空

如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/科特林)

在swift或obj-c中的uitextview末尾添加一个视图

textViewDidChangeSelection 方法认为 textView.text 为空

如何修改 heightForRowAtIndexPath 使其调整到其中的 textview 的高度,同时在 textview 为空时保持最小高度?

Activity 的 TextView 为空