销毁 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 中的占位符的主要内容,如果未能解决你的问题,请参考以下文章