gpt4 book ai didi

ios - UITextView 双击编辑

转载 作者:行者123 更新时间:2023-11-28 17:54:25 24 4
gpt4 key购买 nike

所以我有一个 UITextView,我用它来制作一个可移动、可编辑的标签(我之前对 SO 的搜索表明这显然是最好的选择)。我需要让用户双击以启用编辑并将其设置为第一响应者。我无法找到执行此操作的方法,而且我所有其他搜索都出现了过时的答案或模糊的答案。我尝试过的任何东西似乎都不起作用。我试过使用 UITextViewDelegate 开始编辑,而不是使用 textViewDidChangeSelection: 选择文本,但只有在您更改当前选择后它才会起作用。我还尝试使用自定义 UITapGestureRecognizer,如下所示:

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[doubleTap setNumberOfTouchesRequired:1];
[newLabel addGestureRecognizer:doubleTap];

-(void)doubleTap:(UITapGestureRecognizer *)sender
{
NSLog(@"Double tap detected");
NSLog(@"Sender view of class %@", [[sender view] class]);
UITextView *tappedView = (UITextView *)[sender view];
[tappedView setEditable:YES];
[tappedView becomeFirstResponder];
// [tappedView setEditable:NO];
}

从不调用双击手势。我不确定为什么。奇怪的是,它也不会像那样选择文本。它似乎只是打破了双击手势。有没有办法摆脱标准的双击选择手势,或者修改它?我应该将 UITextView 子类化吗?如果是,我会改变什么?

最佳答案

我找到了一个简洁的解决方案,代码更少(Swift 4.2):

创建一个自定义 UITextView 类并在其中写入此内容

    override var canBecomeFirstResponder: Bool {
if self.isEditable {
return true
} else {
self.isEditable = true
return false
}

然后在 viewDidLoad() 中写入以下内容(或在 Storyboard编辑器中取消选择行为下的“可编辑”)

myTextView.isEditable = false

然后,当您完成编辑文本时,只需将相同的代码放在某处 - 例如。 textViewDidEndEditing(_ textView: UITextView)

myTextView.isEditable = false

加载 View 时,textView 不可编辑,所有数据检测器都可以工作。第二次点击即可对其进行编辑(并禁用数据检测器)。

一旦您退出 textView,它就会再次设置为不可编辑,并且数据检测器会工作。

所有这一切都没有任何手势识别器! :-D

关于ios - UITextView 双击编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631790/

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