2011-04-22 335 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