我在Xcode5的界面生成器上遇到了一个非常令人沮丧的问题。问题在于:
我有一个.xib文件,其中包含许多控件:
当我控制从任何这些控件拖动到与此.xib文件对应的.h或.m文件时,我没有选择创建操作:
" FilesOwner" .xib文件的正确设置为" MessageController"这是.xib文件的ViewController。
这很令人沮丧,因为这个问题不仅发生在这个特定的.xib / VC对上,而且发生在我项目中的所有文件中。我已经清理并重建了项目并关闭并重新打开了XCode,但似乎没有任何工作......
编辑:
在阅读你的评论之后,我意识到我应该更加具体地了解我要做的事情。在上面的屏幕截图中,我选择了UIScrollView,因为我的印象是所有控件都能够生成一些操作。所以,这是我实际尝试做的屏幕截图:
我在这里犯了同样的初学者错误吗?我应该在代码中使用类似的东西来分配此操作,而不是使用IB:
[textView addTarget:self 行动:@选择(textFieldDidChange :) forControlEvents:UIControlEventEditingChanged];
还有更多建议吗?
谢谢!
答案 0 :(得分:1)
与评论相同,您无法对UIScrollView
采取任何措施。如果您还遇到可操作的UI对象问题,例如UIButtons
,UITextFields
等:
检查以确保为该xib文件(文件所有者)定义了正确的自定义类。
还要确保将助理编辑器的选择设置为自动。
答案 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
以外的其他对象。