如何获取 UItextview 触摸坐标位置
Posted
技术标签:
【中文标题】如何获取 UItextview 触摸坐标位置【英文标题】:how to get UItextview touch coordinate position 【发布时间】:2011-03-14 09:53:50 【问题描述】:我需要通过触摸视图来获取坐标位置。我触摸的视图是 UITextview。视图的层次结构是 UIViewController -> UITextview。我想我可以使用locationInView
方法来获取该坐标。我知道 UITextview 有一些委托方法,所以我想我必须使用textViewShouldBeginEditing
委托方法来调用 locatioInView。
这是我的代码 sn-p
-(BOOL)textViewShouldBeginEditing:(UITextView *)textView
NSSet *touches;
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:textView];
NSLog(@"currentTouchPosition: x=%f, y=%f", currentTouchPosition.x, currentTouchPosition.y);
return YES;
我的问题是,currentTouchPosition 在 x 和 y 中总是有 0 值。我不知道该代码有什么问题。 谁能告诉我???
谢谢
更新 最后我解决了这个问题。我在 viewDidLoad 中使用了 UITapGestureRecognizer,然后使用我在 textViewShouldBeginEditing 中使用的相同方法获取点击位置。这是我制作的代码:
- (void)viewDidLoad
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
tap.delegate=self;
[self.textView addGestureRecognizer:tap];
tap.numberOfTapsRequired = 1;
[tap release];
这是 handleTapFrom :
- (void)handleTapFrom:(UITapGestureRecognizer *)recognizer
locationTap = [recognizer locationInView:self.textView];
【问题讨论】:
【参考方案1】:您只需声明一个 NSSet 对象并从中检索数据,这总是空的。
获取 UITextView 的子类并在其中写下 touch begin 方法,即-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
。然后,参数 touches 将为您提供视图上的正确触摸点。使用您的子类对象作为您的 TextView。
【讨论】:
感谢您的回答,我正在尝试,我创建了一个名为 customTextView 的 UITextview 的子类,但在这个应用程序中,此方法从未触发 您是否在您的 customTextView 中为“touchesBegan”方法定义了正文 是的,我是定义代码的,它和我在上面的 textViewShouldBeginEditing 中所做的完全一样,但它在调试器中没有 nslog 打印 你应该在你的方法中使用参数中的 touch 变量。你可以通过点击手势解决这个问题。 是的......我终于解决了这个问题,但它给了我另一个错误,在水龙头中触发的选择器方法有时在 textviewDidChangeSelection 委托方法之后调用,有时在它之前调用。我需要在那个委托方法之前调用它,你知道如何修复它吗??以上是关于如何获取 UItextview 触摸坐标位置的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 中如何获取任意视图触摸位置(全局或局部)的坐标
SwiftUI 中如何获取任意视图触摸位置(全局或局部)的坐标