如何让IB创建动作连接?

时间:2014-09-05 19:14:14

标签: ios objective-c xcode

我在Xcode5的界面生成器上遇到了一个非常令人沮丧的问题。问题在于:

我有一个.xib文件,其中包含许多控件:

enter image description here

当我控制从任何这些控件拖动到与此.xib文件对应的.h或.m文件时,我没有选择创建操作:

enter image description here

" FilesOwner" .xib文件的正确设置为" MessageController"这是.xib文件的ViewController。

这很令人沮丧,因为这个问题不仅发生在这个特定的.xib / VC对上,而且发生在我项目中的所有文件中。我已经清理并重建了项目并关闭并重新打开了XCode,但似乎没有任何工作......

编辑:

在阅读你的评论之后,我意识到我应该更加具体地了解我要做的事情。在上面的屏幕截图中,我选择了UIScrollView,因为我的印象是所有控件都能够生成一些操作。所以,这是我实际尝试做的屏幕截图:

enter image description here

我在这里犯了同样的初学者错误吗?我应该在代码中使用类似的东西来分配此操作,而不是使用IB:

[textView addTarget:self               行动:@选择(textFieldDidChange :)     forControlEvents:UIControlEventEditingChanged];

还有更多建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

与评论相同,您无法对UIScrollView采取任何措施。如果您还遇到可操作的UI对象问题,例如UIButtonsUITextFields等:

检查以确保为该xib文件(文件所有者)定义了正确的自定义类。

Image1

还要确保将助理编辑器的选择设置为自动。

Image2

答案 1 :(得分:1)

UITextField上可以{p> -addTarget:action:forControlEvents:,因为它继承自UIControl UITextView因为UITextView 确实存在不继承自UIControl,因此缺乏此目标行动能力。

您必须使用UITextViewDelegate并实施-textViewDidChange:方法才能执行相同操作。

//1
//set delegate programmatically
[textView setDelegate:self];
//or via the IB: right-click drag UITextView to `File's owner`

//2
-(void)textViewDidChange:(UITextView *)textView
{
    //something happened with the textView!!
}

PS:您可能希望将UITextView对象重命名为textView以外的其他对象。