Проблемы с использованием методов делегата UIPickerView - PullRequest
0 голосов
/ 25 октября 2011

У меня есть UIPicker и я настроил методы делегата.

Я хочу, чтобы что-то происходило, когда пользователь нажимает на выбранный элемент выбора.Обработка этого в:

- (void)pickerView:(UIPickerView *)aPickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

Запускает событие, которое происходит, когда выбранный элемент выбора, не нажат.

Как я могу вызвать событие, когда выбранный элемент выбора выбирается?

1 Ответ

1 голос
/ 25 октября 2011

Вы должны создать подкласс UIPickerView и обнаруживать прикосновения там вручную. Да, это выглядит грязно. Но это, кажется, единственный способ сделать это. Приведенный ниже код может помочь,

@interface TouchDetectionView : UIPickerView {

}
- (UIView *)getNextResponderView:(NSSet *)touches withEvent:(UIEvent *)event;
@end
@implementation TouchDetectionView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIView * hitTestView = [self getNextResponderView:touches withEvent:event];
    [hitTestView touchesBegan:touches withEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIView * hitTestView = [self getNextResponderView:touches withEvent:event];
    [hitTestView touchesMoved:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIView * hitTestView = [self getNextResponderView:touches withEvent:event];
    [hitTestView touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIView * hitTestView = [self getNextResponderView:touches withEvent:event];
    [hitTestView touchesCancelled:touches withEvent:event];
}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    return self;
}

- (UIView *)getNextResponderView:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch * touch = [touches anyObject];
    CGPoint point = [touch locationInView:self];
    UIView * hitTestView = [super hitTest:point withEvent:event];

    return ( hitTestView == self ) ? nil : hitTestView;
}

Ссылка: Ответ на touchBegan в UIPickerView вместо UIView

...