如何将IBAction方法连接到普通视图以进行修饰事件?

时间:2009-05-26 11:49:34

标签: iphone interface-builder

我在Xcode中创建了一个基于视图的空白新应用程序项目。它为它生成了一个myProjectViewController和一个nib。在该视图控制器的那个nib中,只有一个视图。我想测试一些事件处理的东西并创建一个 - (IBAction)方法,当我触摸视图时它只会记录一个“hello world”。但出于某种原因,IB并没有给我机会来联系这个行动。我在那里做错了什么?我还尝试将UIView作为子视图放在那里。当我从那里拖到File的所有者(whoose类是myProjectViewController,我在标题中有IBAction)时,甚至没有提到IBAction。但它确实应该,对吧?

6 个答案:

答案 0 :(得分:12)

有一种简单的方法可以实现这一目标。 转到您班级的界面制作工具>>选择您想要将操作添加到>>的视图然后将自定义类从IDENTITY INSPECTOR从UIView更改为' UIControl'。现在你可以在这个视图中添加任何IBAction方法。

Change class to UIControl

add IBAction event to this view to perform action method

答案 1 :(得分:6)

IBAction只是您添加到方法声明中的标记,该声明将该方法标识为连接到控件操作的候选方法。

IBAction方法是接收某些其他控件的动作消息的方法。

UIViews不发送任何动作。 UIControls。所以没有什么可以从简单的UIView到你的对象。您只能将IBActions连接到UIControl子类和UIBarButtonItems。

答案 2 :(得分:3)

为此,我们有touchesBegan,touchesMoved和touchesEnded方法。

答案 3 :(得分:0)

IBAction是用于从控件接收动作的方法。它们并不表示Interface Builder该方法是一个动作的来源(该类生成以响应其他一些事件)。

要从UIView子类连接自定义事件,请参阅我对相关问题here的回答。您需要使用委托/协议方法。

答案 4 :(得分:0)

我认为你可以像@lostInTransit建议的那样使用touchesBegan或touchesEnded方法。它是正确的方式,而不是将其视为按钮。

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

// do something here

}

答案 5 :(得分:-1)

让您的视图成为一类UIButton。这将使视图可以挂钩。