我正在以编程方式向superview添加一个UIView,我想向UIView添加一个目标,以便能够在触摸时执行任何操作。为了添加目标,我需要将UIView的自定义类设置为UIControl。通常那是在IB中完成的,但是由于我以编程方式进行,我无法以这种方式进行设置。我试着像这样设置UIControl,但它没有用。
subView.class = UIControl;
这样做的正确方法是什么?
答案 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)
您有两种选择:
UIControl
UIView
子类,此类具有相同的视图行为,但您可以使用
选择器addTarget:action:forControlEvents:
来控制其事件,
或... UIGestureRecognizer
来控制与您的互动
图。