Dav*_*ray 9 iphone objective-c uiview uigesturerecognizer ios
我在我的iOS应用程序中使用UIGestureRecognizer,我遇到了一些问题.
我只希望手势在视图的某个区域中工作,所以我创建了一个具有特定帧的新UIView并将其添加到根视图中.这个手势很好用,但现在唯一的问题是我无法点击新视图下面/后面的东西(根视图上的对象).如果我将userInteractionEnabled设置为NO,则会中断手势,因此这不是一个选项.
我该怎么做才能解决这个问题?
谢谢.
dan*_*anh 33
不要为手势识别器创建新视图.识别器实现了locationInView:方法.为包含敏感区域的视图设置它.在handleGesture上,点击测试你关心的区域,如下所示:
0)在包含您关注的区域的视图上执行所有这些操作.不要仅为手势识别器添加特殊视图.
1)设置mySensitiveRect
@property (assign, nonatomic) CGRect mySensitiveRect;
@synthesize mySensitiveRect=_mySensitiveRect;
self.mySensitiveRect = CGRectMake(0.0, 240.0, 320.0, 240.0);
Run Code Online (Sandbox Code Playgroud)
2)创建你的gestureRecognizer:
gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[self.view addGestureRecognizer:gr];
// if not using ARC, you should [gr release];
// mySensitiveRect coords are in the coordinate system of self.view
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self.view];
if (CGRectContainsPoint(mySensitiveRect, p)) {
NSLog(@"got a tap in the region i care about");
} else {
NSLog(@"got a tap, but not where i need it");
}
}
Run Code Online (Sandbox Code Playgroud)
敏感的rect应该在myView的坐标系中初始化,该坐标系与你附加识别器的视图相同.
| 归档时间: |
|
| 查看次数: |
8324 次 |
| 最近记录: |