долгое нажатие и касаниеНачало

Когда я обнаруживаю длительное нажатие в моем ViewController, я показываю всплывающее меню (добавляю UIView в качестве подвида). Когда долгое нажатие заканчивается, я скрываю свое меню (удаляю UIView из супервизора). Поэтому мое меню видно только тогда, когда пользователь касается экрана. Проблема в том, что когда я держу и двигаю пальцем, не прикасаясь, мое меню не вызывает touchesBegan или touchesMoved, поэтому я не могу выбрать какую-либо кнопку из меню. Есть ли другой способ, чем передать событие из ViewController? Я хотел бы сделать это в моем UIView. Помогите, пожалуйста.


person Jastine    schedule 04.05.2014    source источник


Ответы (1)


Лучше всего добавить UIPanGestureRecognizer в представление ViewControllers. Как это:

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[self.view addGestureRecognizer:panGestureRecognizer];

В реализации handlePanGesture вы должны найти перевод распознавателя относительно вашего всплывающего окна.

-(void)handlePanGesture:(id)sender {
    UIPanGestureRecognizer *recognizer = sender;
    if (recognizer.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [recognizer translationInView:self.contentView];
        //Here you can use translation to detect what button touched with gesture
    }
}
person Daniil Rumyantsev    schedule 04.05.2014