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 であることです。そのコードの何が問題なのかわかりません。誰か教えてくれませんか???

ありがとうございました

UPDATE 最後に、私はこの問題を解決しました。私は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

1 つの NSSet オブジェクトを宣言し、そこからデータを取得するだけで、常に空になります。UITextView のサブクラスを取得し、その中に touch begin メソッドを書き留めます。つまり、-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventパラメーター touches は、ビュー上の正しいタッチ ポイントを提供します。サブクラス オブジェクトを TextView として使用します。

于 2011-03-16T16:20:34.997 に答える