我想在UITextView中摆脱放大和文本选择,但我需要电话号码,链接和地址检测器。我正在使用
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) {
gestureRecognizer.enabled = NO;
}
[super addGestureRecognizer:gestureRecognizer];
return;}
停止放大,但它也会停止选择textview检测到的电话号码/地址/链接。
如果我[_txtView setSelectable:NO];
它会停止放大和文本选择以及数据检测。
答案 0 :(得分:3)
将图像放在.xib文件中的UITextview上,然后放在代码下面。
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBarHidden = YES;
UITapGestureRecognizer *tappress= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
img.userInteractionEnabled = YES;
[img addGestureRecognizer:tappress];
}
-(void)longPressed:(UILongPressGestureRecognizer *)sender
{
[yourtextview becomeFirstResponder];
}
在我的代码中,img是一个UIImageview
答案 1 :(得分:2)
经过相当长的一段时间的尝试,我设法通过覆盖UITextView子类上的addGestureRecognizer来阻止文本选择,放大和保持数据检测(链接可点击等),只允许UILongPressGestureRecognizer延迟触摸结束:
UIUnselectableTextView.m
-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && gestureRecognizer.delaysTouchesEnded)
{
[super addGestureRecognizer:gestureRecognizer];
}
}
答案 2 :(得分:0)
试试这个:
添加此方法
- (void)textViewDidChangeSelection:(UITextView *)textView
{
NSRange selected;
selected.location = 0;
selected.length = 0;
textView.selectedRange = selected;
}
这会禁用放大,但仍然可以点击链接
答案 3 :(得分:-2)
您只需要确保为UItextfield设置了正确的参数(并且无需通过覆盖手势来实际完成它)。我想如果您在界面构建器中更改“行为”和“检测”的属性如下,您将获得所需的行为。