2013-08-30 3 views
0

Я работаю над управлением UIPickerView в iPhone app.I хочет, чтобы обнаружить прикосновение индикатора выбора UIPickerView.Please помощи me.Now я использую следующий кодКак я могу обнаружить касание индикатора выбора UIPickerView в iphone?

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pickerViewTapGestureRecognized:)]; 
[self.picker addGestureRecognizer:gestureRecognizer]; 

-(void)pickerViewTapGestureRecognized:(UITapGestureRecognizer *)gestureRecognizer 
{ 
CGPoint touchpoint = [gestureRecognizer locationInView:gestureRecognizer.view.superview]; 
CGRect frame = self.picker.frame; 
CGRect selectorFrame = CGRectInset(frame, 0.0, self.picker.bounds.size.height * 0.85/2.0); 
if (CGRectContainsPoint(selectorFrame, touchpoint)) { 

    } 
} 
+0

Что именно вы хотите? Почему вы хотите это сделать? С какими проблемами вы сталкиваетесь? – Bhavin

+0

Вам нужно вернуть выбранный элемент в Picker View или вернуть координату? –

+0

@ Vin, мне нужно прикоснуться к выборуИндикатор или другая часть UIPickerview.Как можно обнаружить прикосновение? – IKKA

ответ

0

Отсюда: Responding to touchesBegan in UIPickerView instead of UIView

подклассы UIpickerView - это правильный способ сделать это. Но вы должны переопределить точку события - (UIView *) hitTest: (CGPoint) с методом событияEvent: (UIEvent *). Это метод, вызываемый всякий раз, когда вы касаетесь экрана, и он возвращает представление, которое будет реагировать на касание. Другими словами, будет вызываться представление, чьи штрихиBegan: withEvent: method.

UIPickerView имеет 9 подсмотров! В реализации класса UIPickerView - (UIView *) hitTest: (CGPoint) точка с событиемEvent: (UIEvent *) не вернет себя (это означает, что touchhesBegan: withEvent: вы пишете в подклассе не вызывается), но вернется subview, точно представление в индексе 4 (недокументированный подкласс UIPickerTable).

Хитрость заключается в том, чтобы сделать объект - (UIView *) hitTest: (CGPoint) с помощью метода событияEvent: (UIEvent *), чтобы вернуть себя, чтобы вы контролировали касанияBegan: withEvent :, touchesMoved: withEvent: and touchesEnded: withEvent: методы.