使用hitTest:withEvent:返回自定义对象

时间:2014-03-23 01:43:37

标签: ios objective-c cocoa-touch

我想使用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event在屏幕上返回一个变量完整的自定义对象。

我试过了:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self.view];
    SLDSlide *selected = (SLDSlide *)[self hitTest:location withEvent:event];
}

SLDSlide *selected = (SLDSlide *)[super hitTest:location withEvent:event];

但是它告诉我这些方法没有@interface,而且我不确定如何自己写一个会返回我想要的对象(SLDSlide,这是UIImageView)的子类。

1 个答案:

答案 0 :(得分:1)

以下代码将在视图控制器SLDSlide中的给定点找到最前面的self.view对象。

SLDSlide *selected = nil;

for ( UIView *view in self.view.subviews )
{
    if ( [view isKindOfClass:[SLDSlide class]] )
        if ( CGRectContainsPoint( view.frame, location ) )
            selected = (SLDSlide *)view;
}

if ( selected )
    NSLog( @"found one: %@", selected );

请注意,如果视图层次结构具有多个级别,则代码需要在层次结构中递归搜索,因此这仅适用于所有SLDSlide个对象都是视图控制器的{{1}个子视图的情况。 1}}。