帮助Subclass属性

时间:2010-08-30 14:16:28

标签: iphone objective-c cocoa uiview hittest

我有一个名为Card的UIView子类,我在我的主板上移动并放在称为插槽的热点上。当我丢弃卡片时,我使用hitTest来确定我是否将卡片放在我的一个热点上。我想获得该热点的财产,但我无法让它正常工作。我唯一的猜测是hitTest返回一个UIView,我的热点是UIView子类。我得到的错误是“请求成员'slotIndex',而不是结构或联合”

以下是我在Card Class中使用的TouchesEnded方法

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

   UITouch *touch = [touches anyObject];   
   CGPoint location = [touch locationInView:self.superview];

   [self setUserInteractionEnabled:NO];

   UIView *backView = [self.superview hitTest:location withEvent:nil];

   if ([backView isKindOfClass:[CardSlot class]]) {
      self.center = backView.center;

      NSLog(@"Slot Number: %@", backView.slotIndex);

   } else {
      //Move it back to the top corner
      self.center = CGPointMake(50,50);
   }

   [self setUserInteractionEnabled:YES];

}

我的问题是如何进行测试,如果我在插槽热点,然后获取该插槽的属性(UIView子类)?

1 个答案:

答案 0 :(得分:0)

为了帮助编译器,您需要在确定它是一个之后将指针强制转换为CardSlot。这样编译器就可以知道slotIndex属性。例如:

if ([backView isKindOfClass:[CardSlot class]]) {
    CardSlot *cardSlot = (CardSlot *)backView;
    // From here you can access cardSlot.slotIndex
}