我在Xcode中创建了一个基于视图的空白新应用程序项目。它为它生成了一个myProjectViewController和一个nib。在该视图控制器的那个nib中,只有一个视图。我想测试一些事件处理的东西并创建一个 - (IBAction)方法,当我触摸视图时它只会记录一个“hello world”。但出于某种原因,IB并没有给我机会来联系这个行动。我在那里做错了什么?我还尝试将UIView作为子视图放在那里。当我从那里拖到File的所有者(whoose类是myProjectViewController,我在标题中有IBAction)时,甚至没有提到IBAction。但它确实应该,对吧?
答案 0 :(得分:12)
有一种简单的方法可以实现这一目标。 转到您班级的界面制作工具>>选择您想要将操作添加到>>的视图然后将自定义类从IDENTITY INSPECTOR从UIView更改为' UIControl'。现在你可以在这个视图中添加任何IBAction方法。
答案 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。这将使视图可以挂钩。