0

有没有办法在视图的某些区域取消触摸事件?我有一个自定义 UIView,我只想处理距离屏幕边缘 100 像素的触摸事件。

4

2 回答 2

1

假设您使用的是 Interface Builder,只需使用另一个 UIView。调整它的大小,并将其放置在您希望发生触摸事件的位置。然后,让自定义视图能够被触摸激活。以编程方式,我个人不知道该怎么做。

于 2012-05-14T23:34:12.170 回答
1

正如贾斯汀所说,在界面构建器中(或以编程方式)添加一个自定义 UIView 并将其添加到视图中。我们称该视图为 touchArea。然后在您的 Viewcontroller.m 文件中,实现

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

方法(取决于您要执行的操作),并且在这些方法中:

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self.view];
if (CGRectContainsPoint(touchArea.frame, location)) {

//code to execute

}

实际上,我认为即使将 CGRect 作为放置在视图上的实例变量也可以工作,但以上是我实现它的方式。

于 2012-05-15T00:08:40.780 回答