假设您有一个UITextView,并且您想设置此UITextView的委托。
首先,你将它放在头文件中:
@interface myViewController : UIViewController <UITextViewDelegate> { ...
然后,如果您使用的是IB,则可以单击UITextView,并将委托出口与文件所有者连接。这将允许您使用- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView {
等命令。
现在,假设您想以编程方式执行此操作。我在这里找到了这个建议:
textView.delegate = yourDelegateObject;
但我不知道'yourDelegateObject'代表什么。在IB中,我正在与File的所有者进行连接...所以在代码中,它需要是textView.delegate = File的所有者。但在这种情况下,File的所有者是什么? myViewController?的UIViewController?
我想,我真的不明白这个原则。非常感谢任何帮助。
答案 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
}
}