2011-04-22 36 views
1

假设您有一个UITextView,并且您想要设置此UITextView的代表。UITextViewDelegate:如何在代码中设置代理(不在IB中...)

第一件事是,你把这个在你的头文件:

@interface myViewController : UIViewController <UITextViewDelegate> { ... 

然后,如果你使用IB,你会点击UITextView的,并与文件的所有者连接代理出口。这将允许您使用命令,如- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView {等。

现在,假设您想以编程方式执行此操作。我在这里发现了这个建议:

textView.delegate = yourDelegateObject; 

但我不知道'yourDelegateObject'代表什么。在IB中,我正在与文件的所有者连接...所以在代码中,它需要是textView.delegate =文件的所有者。但在这种情况下文件的所有者是什么? myViewController?的UIViewController?

我想我不太了解这个原理。任何帮助将非常感激。

回答

2

如其他人所述,设置UITextViewdelegate属性。最常见的代表对象是self

详细说明“委托对象”:委托对象是您希望事件响应的类(实现UITextViewDelegate协议)。例如,如果使用类实例而不是self,则UITextView会将其事件发送到该类中的委托方法的实现。

2

最有可能要委托分配给电流控制器对象,即self

textView.delegate = self; 
2

yourDelegateObject =自我。

您可以使用

textView.delegate = self;

2

委托是你的UIViewController所以它的

textView.delegate = self; 
2

试图把自己作为代表:

textView.delegate = self; 

所以,你需要把功能- (BOOL)textViewShouldBeginEditing:(UITextView的*) aTextView在执行您的控制器。

1

委托可以是任何对象,它不一定是创建textField的类,尽管通常是 - 只要这是真的,您将它设置为self,尽管您可以将其设置为任何符合协议的实例化对象(无论何时为该对象定义正式协议)。

1

只是把它分配给自己:

textView.delegate = self; 
0

斯威夫特:

textView.delegate = self