Как получить координаты касания пальцем в UIView? - PullRequest
7 голосов
/ 24 мая 2011

Как получить координаты касания пальцем в UIView?(Я бы предпочел не использовать большой набор кнопок)

Спасибо

Ответы [ 5 ]

30 голосов
/ 24 мая 2011

Есть два способа сделать это.Если у вас уже есть подкласс UIView, который вы используете, вы можете просто переопределить метод -touchesEnded:withEvent: этого подкласса, например:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    CGPoint point = [aTouch locationInView:self];
    // point.x and point.y have the coordinates of the touch
}

Если вы еще не подклассифицируете UIView,хотя, и представление принадлежит контроллеру представления или какому-то другому, вы можете использовать UITapGestureRecognizer, например так:

// when the view's initially set up (in viewDidLoad, for example)
UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[someView addGestureRecognizer:rec];
[rec release];

// elsewhere
- (void)tapRecognized:(UITapGestureRecognizer *)recognizer
{
    if(recognizer.state == UIGestureRecognizerStateRecognized)
    {
        CGPoint point = [recognizer locationInView:recognizer.view];
        // again, point.x and point.y have the coordinates
    }
}
2 голосов
/ 16 августа 2017

Свифт 3 ответа

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapAction(_:)))
yourView.addGestureRecognizer(tapGesture)


func tapAction(_ sender: UITapGestureRecognizer) {

      let point = sender.location(in: yourView)


}
2 голосов
/ 12 апреля 2016
func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
    print("tap working")
    if gestureRecognizer.state == UIGestureRecognizerState.Recognized
    { 
      `print(gestureRecognizer.locationInView(gestureRecognizer.view))`
    }
}
2 голосов
/ 24 мая 2011
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:myView];
    NSLog("%lf %lf", touchPoint.x, touchPoint.y);
}

Тебе нужно сделать что-то подобное. touchesBegan:withEvent: - это метод UIResponder, из которого UIView и UIViewController оба получены. Если вы воспользуетесь этим методом, то найдете несколько учебных пособий. MoveMe Образец от Apple - хороший.

2 голосов
/ 24 мая 2011

Полагаю, вы имеете в виду распознавание жестов (и касаний).Лучшее место для поиска такого широкого вопроса - пример кода Apple Touches .Он проходит через большое количество информации.

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