销毁 2 个 UITextViews 中的占位符

Posted

技术标签:

【中文标题】销毁 2 个 UITextViews 中的占位符【英文标题】:Destroy placeholders in 2 UITextViews 【发布时间】:2015-02-04 20:29:54 【问题描述】:

我在单个视图控制器上有 2 个 UITextView。他们每个都有占位符,我试图让占位符在 textViewShouldBeginEditing 时消失。我尝试过使用标签,但第一个会起作用,然后之后的每个选择都无法破坏占位符。谢谢

【问题讨论】:

占位符?在文本视图中?没有。 如果您可以显示所有相关代码,这将有所帮助。一旦您开始输入,占位符也会自动清除。 我必须为占位符创建 NSMutableAttributedStrings,因为它们中有 '>'。 是否有 textField 或 TextView。 UITextView 没有占位符。 您希望在选择一个 textView 时两者都消失,还是单独消失? 【参考方案1】:

就这样吧

-(void)textViewDidBeginEditing:(UITextView *)textView

    if([textView.text isEqualToString:@"Enter Text here......"]) //Enter Text here...... is your placeholder text
    
        textView.text = @"";
    

- (void)textViewDidEndEditing:(UITextView *)textView

    if([textView.text length] == 0)
    
        textView.text = @"Enter Text here......";
    

【讨论】:

通常我会这样做。对我来说,问题是它们有不同的 NSMutableAttributedString 类型占位符。 我也喜欢把它放在 shouldChange textInRange if textView.text.length == 1 && text == "" textView.attributedText = textView.placeHolder textView.selectedRange = NSMakeRange(0, 0) 【参考方案2】:

而不是使用

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView

我用过

-(void)textViewDidBeginEditing:(UITextView *)textView

它现在工作正常。感谢大家的帮助。

【讨论】:

【参考方案3】:

使用 if textView.isFirstResonder,但在

textViewDidBeginEditing

不在

textViewShouldBeginEditing

【讨论】:

这不能归类为答案。如果另一个答案不正确,请说明它是正确的,以便可以将其删除或修复。目的是不仅为 OP 提供明确的正确答案,还为可能遇到类似问题的任何其他人提供明确的正确答案 那也不行。我尝试使用标签和 if tag = 1 else if tag = 2 并且也失败了。

以上是关于销毁 2 个 UITextViews 中的占位符的主要内容,如果未能解决你的问题,请参考以下文章

占位符

C语言中的格式占位符

记录一下python中的十大%占位符对应的格式化...

Android布局中的占位符文本(仅限设计过程)?

一页中的多个 Summernote 所见即所得编辑器具有相同的占位符

准备好的语句中的占位符