gpt4 book ai didi

ios - textViewDidChangeSelection 内奇怪的 UItextView 行为设置范围

转载 作者:行者123 更新时间:2023-11-29 10:56:08 28 4
gpt4 key购买 nike

在 textViewDidChangeSelection 委托(delegate)中为 textView 设置 selectedRange 属性时出现奇怪的行为。

我在 viewDidLoad 中的代码是:

hiddenTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
//[hiddenTextView setHidden:YES];
_hiddenTextViewText=@"ulrd";
hiddenTextView.text = _hiddenTextViewText;
hiddenTextView.delegate = self;
_hiddenTextViewDefaultRange = NSMakeRange(2,0);
hiddenTextView.selectedRange = _hiddenTextViewDefaultRange; //horizontal and vertical center of the textview
[self.view addSubview:hiddenTextView];

[hiddenTextView becomeFirstResponder];
if (_keyboardShown)
[hiddenTextView resignFirstResponder];

我将 textViewDidChangeSelection 定义如下:

- (void)textViewDidChangeSelection:(UITextView *)textView {

NSLog(@"%lu",(unsigned long)textView.selectedRange.location);


if (textView.selectedRange.location != _hiddenTextViewDefaultRange.location)
{
hiddenTextView.selectedRange = _hiddenTextViewDefaultRange;
}

}

我设置了一个 4 个字符的文本,并将选择索引放在位置 2(中间)。结果是,如果我在模拟器 NSLog 中按键盘上的向上箭头,输出 0(文本开始),然后输出 2(重置位置),这是正确的。如果我再次按下它会做同样的事情所以仍然正确。问题是,如果我按了 x 次,我必须按相同的次数才能到达文本的末尾(位置 4)。我尝试使用 UIButton 重置位置,而不是以编程方式进行重置,并且它工作正常。有什么想法吗?

最佳答案

我设法克服了这个问题。而不是:

hiddenTextView.selectedRange = _hiddenTextViewDefaultRange;

我用过:

dispatch_async(dispatch_get_main_queue(), ^{
textView.selectedRange = hiddenTextViewDefaultRange;
});

...异步执行命令。它起作用了,但是我不确定为什么它需要那样。

关于ios - textViewDidChangeSelection 内奇怪的 UItextView 行为设置范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340360/

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