UITextViewDelegate:如何在代码中设置委托(不在IB ...中)

时间:2011-04-22 12:42:30

标签: iphone objective-c cocoa-touch delegates uitextview

假设您有一个UITextView,并且您想设置此UITextView的委托。

首先,你将它放在头文件中:

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

然后,如果您使用的是IB,则可以单击UITextView,并将委托出口与文件所有者连接。这将允许您使用- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView {等命令。

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

textView.delegate = yourDelegateObject;

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

我想,我真的不明白这个原则。非常感谢任何帮助。

9 个答案:

答案 0 :(得分:2)

您很可能希望将委托分配给当前控制器对象,即self

textView.delegate = self;

答案 1 :(得分:2)

yourDelegateObject = self。

你可以使用

textView.delegate = self;

答案 2 :(得分:2)

委托是你的UIViewController所以它是

textView.delegate = self;

答案 3 :(得分:2)

尝试将self作为委托:

textView.delegate = self;

所以你需要在控制器的实现中放置函数 - (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView

答案 4 :(得分:2)

正如其他人所说,设置delegate的{​​{1}}属性。最常见的委托对象是UITextView

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

只需将其分配给自己:

textView.delegate = self;

答案 7 :(得分:0)

夫特:

textView.delegate = self

答案 8 :(得分:-1)

确保在您的类中添加UIItextFieldDelegate。

示例:说我的班级叫做Pizza,我的textField叫做goodEats

class Pizza: UIViewController, UITextFieldDelegate {

//Then set the delegate in viewDidLoad 
override func viewDidLoad() {
super.viewDidLoad()

    goodEats.delegate = self

}
}