以编程方式设置UIView的自定义类?

时间:2011-09-06 20:38:20

标签: objective-c ios class uiview uicontrol

我正在以编程方式向superview添加一个UIView,我想向UIView添加一个目标,以便能够在触摸时执行任何操作。为了添加目标,我需要将UIView的自定义类设置为UIControl。通常那是在IB中完成的,但是由于我以编程方式进行,我无法以这种方式进行设置。我试着像这样设置UIControl,但它没有用。

subView.class = UIControl;

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

UIView的一个实例没有目标。如果需要目标/操作机制,请创建UIControl的实例。否则,请在视图上使用gesture recognizer

答案 1 :(得分:2)

你有时将UIView的类别设置为其他东西,比如MyView,在IB中你想要创建一个MyView,但是IB在它的库中没有MyView,所以你不能只将一个拖入你的看法。因此,您可以在UIView中拖动并将其类更改为MyView。

当您在代码中实例化对象而不是从.xib加载对象时,根本不需要这样做。在代码中,您知道要实例化的类,因此您只需实例化该类:

MyView *subview = [[MyView alloc] initWithFrame:someFrame];

如果你想让子视图成为UIButton,你可以实例化它:

UIButton *subview = [UIButton buttonWithType:UIButtonTypeRoundedRect];

不要乱搞isa-swizzling,至少现在不要。如果你问这个问题(并且提出这个问题并没有错),你应该把调情当作一种黑暗艺术来对待,你可能会在未来的某个时候找到它。

答案 2 :(得分:0)

您有两种选择:

  1. 您必须直接创建一个UIControl UIView子类,此类具有相同的视图行为,但您可以使用 选择器addTarget:action:forControlEvents:来控制其事件, 或...
  2. 您应该使用UIGestureRecognizer来控制与您的互动 图。