IOS: Установка альфа «Dimmer» представление на более чем 0,0 отключает сенсорные события (?)

StackOverflow https://stackoverflow.com/questions/4371054

Вопрос

У меня есть приложение, в котором я пытаюсь позволить пользователю тускнеть отображение по жестам. У меня есть UIVIEW, который содержит ряд других просмотров и кнопок, и над тем, что я помещаю UIView, цвет фона, который я устанавливаю на черный. Чтобы не иметь затемнения, я установил альфа этого диммера на ноль (прозрачный). Чтобы повлиять на затемнение, я увеличиваю альфа-значение в небольших шагах. Это, кажется, работает хорошо, кроме ... (вы знали, что идут) всякий раз, когда альфа-значение становится больше нуля, сенсорные события заблокированы - не получены как обычно.

Создание мнение диммера:

UIPanGestureRecognizer * panner = nil;
panner = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(handlePanGesture:)];
[self.view addGestureRecognizer:panner ];
[panner setDelegate:self];
[panner release];


CGRect frame = CGRectMake(0, 0, 320, 460);
self.dimmer = [[UIView alloc] initWithFrame:frame];
[self.dimmer setBackgroundColor:[UIColor blackColor]];
[self.view addSubview:dimmer];

Обработка жесткого жеста:

-(IBAction) handlePanGesture:(UIPanGestureRecognizer *) sender
{
    static CGPoint lastPosition = {0};
    CGPoint nowPosition;
    float alpha = 0.0;
    float new_alpha = 0.0;
    nowPosition = [sender translationInView: [self view]];
    alpha = [dimmer alpha];

    if (nowPosition.y > lastPosition.y)
    {   NSLog(@"Down");
        new_alpha = min(alpha + 0.02,1.0);
        [dimmer setAlpha:(new_alpha)];
    }
    else if (nowPosition.y < lastPosition.y)
    { 
        NSLog(@"Up"); 
        new_alpha = max(alpha - 0.02,0);
        [dimmer setAlpha:(new_alpha)];
    }
    else
    {   NSLog(@" neither "); }
    NSLog(@"alpha = %f new_alpha = %f", alpha, new_alpha);
    lastPosition = nowPosition;
}

Любые идеи, почему события блокируются? Есть лучший способ это сделать?
Я прочитал несколько постов и погуглил довольно немного, но не видел ничего особенного.

Любая и вся помощь оценивается.

: bp:

Это было полезно?

Решение

Попробуйте установить User InternationActionEnabled на нет на вашем представлении Dimmer. Это должно сказать, чтобы представить не взаимодействовать с сенсорными событиями, что должно позволить им продолжать до видов под диммером.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top