как получить координату касания UItextview - PullRequest
1 голос
/ 14 марта 2011

Мне нужно получить координату от прикосновения к виду.Точка зрения, которой я занимаюсь, - это 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 всегда имеет значение 0 в x и y.Я не знаю, что не так с этим кодом.Может кто-нибудь сказать мне ???

спасибо

ОБНОВЛЕНИЕ Наконец-то я решил эту проблему.Я использую UITapGestureRecognizer в viewDidLoad, а затем получаю местоположение крана, используя тот же метод, который я использовал в 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 Ответ

0 голосов
/ 16 марта 2011

Вы просто объявляете один объект NSSet и извлекаете из него данные, которые всегда дают пустое место. Возьмите подкласс UITextView и запишите в нем метод начала касания, т.е. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event. Параметр касания даст вам правильную точку касания в представлении. Используйте ваш объект подкласса как TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...