gpt4 book ai didi

ios - 如何真正清除 UITextView...

转载 作者:可可西里 更新时间:2023-11-01 03:39:57 25 4
gpt4 key购买 nike

我很惭愧地承认我不知道如何清除一个UITextView

清除是指将其文本留空并删除其所有属性。我认为将它设置为 nil 就足够了,但是第一个字符的属性保留在那里,静静地等待我再次键入以添加。

例如,下面的代码有一个普通的 UITextView,可以在双击时清除 (doubleTapAction:)。加载后,我添加了一个自定义属性,当 UITextView 被清除时,该属性也应该被删除。

@implementation HPViewController

- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"test"];
[attributedString addAttributes:@{@"attribute" : @"value"} range:NSMakeRange(0, 1)];
self.textView.attributedText = attributedString;
}

- (IBAction)doubleTapAction:(id)sender
{
self.textView.text = nil;
// Also tried:
// self.textView.text = @"";
// self.textView.attributedText = nil;
// self.textView.attributedText = [[NSAttributedString alloc] initWithString:@""];
}

- (void)textViewDidChange:(UITextView *)textView
{
NSLog(@"%@", textView.attributedText);
}

@end

清除 UITextView 然后键入字母“d”记录以下内容:

d{
NSFont = "<UICTFont: 0x8a7e4e0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection 0, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0";
attribute = value;
}

我的自定义属性还在!

这是错误还是预期的行为?

最佳答案

这个可怕的 hack 可以解决问题:

self.textView.text = @"Something, doesn't matter what as long as it's not empty";
self.textView.text = @"";

不过,最好确认这是一个错误还是预期的行为。我在文档中找不到任何相关内容。

关于ios - 如何真正清除 UITextView...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com