我想使用- (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
)的子类。
答案 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}}。