我有一个应用程序,试图让用户通过手势使显示变暗。我有一个UIView,其中包含许多其他视图和按钮,然后在上面放置一个UIView,其背景颜色设置为黑色。为了没有调光,我将该调光器视图的Alpha设置为零(透明)。为了实现调光,我逐步增加了alpha值。除了...(您知道即将到来),只要alpha值大于零,触摸事件就会被阻止-不会像往常一样被接收,这似乎工作得很好。
创建调光器视图:
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;
}
有什么想法可以阻止事件发生吗?有一个更好的方法吗?
我读过几篇文章,并在Google上搜索了很多,但还没有发现任何非常相关的内容。
任何和所有帮助表示赞赏。
:bp:
最佳答案
尝试在调光器视图上将userInteractionEnabled设置为NO。这应该告诉视图不要与触摸事件交互,这应该允许它们继续向下进入调光器下方的视图。