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