我需要通过触摸视图来获取坐标位置。我触摸的视图是UITextview。视图的层次结构是UIViewController - > UITextView的。我想我可以使用locationInView
方法来获得该坐标。我知道UITextview有一些委托方法,所以我认为我必须使用textViewShouldBeginEditing
委托方法来调用locatioInView。
这是我的代码段
-(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中使用的相同方法获取了tap位置。这是我做的代码:
- (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];
}
答案 0 :(得分:0)
您只需声明一个NSSet对象并从中检索数据,这些数据总是很有用。
取一个UITextView的子类并在其中写下touch begin方法,即-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
。参数touches将在视图上为您提供正确的触摸点。使用您的子类对象作为TextView。