1

我需要通过触摸视图来获取坐标位置。我触摸的视图是 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 中使用的相同方法获取点击位置。这是我制作的代码:

- (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];

}
4

1 回答 1

0

您只需声明一个 NSSet 对象并从中检索始终为空的数据。取一个 UITextView 的子类并在其中写下 touch begin 方法,即-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event。参数 touches 将为您提供视图上的正确触摸点。使用您的子类对象作为您的 TextView。

于 2011-03-16T16:20:34.997 回答