У меня есть приложение, в котором я пытаюсь позволить пользователю затемнять экран жестами.У меня есть 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;
}
Есть идеи, почему события блокируются?Есть ли лучший способ сделать это?
Я прочитал несколько постов и немного погуглил, но не увидел ничего очень уместного.
Любая и вся помощь оценена.
: п.н.: