【问题标题】:UITextViewDelegate: how to set the delegate in code (not in IB...)UITextViewDelegate:如何在代码中设置委托(不在 IB 中......)
【发布时间】:2011-04-22 12:42:29
【问题描述】:

假设你有一个 UITextView 并且你想设置这个 UITextView 的委托。

第一件事是你把它放在你的头文件中:

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

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

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

textView.delegate = yourDelegateObject;

但我不知道“yourDelegateObject”代表什么。在 IB 中,我正在与 File's Owner 连接......所以在代码中,它需要是 textView.delegate = File's Owner。但是在这种情况下,文件的所有者是什么?我的视图控制器? UIViewController?

我想我不太了解原理。任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    正如其他人所说,设置UITextViewdelegate 属性。最常见的委托对象是self

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

    【讨论】:

      【解决方案2】:

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

      textView.delegate = self;
      

      【讨论】:

        【解决方案3】:

        yourDelegateObject = self.

        你可以使用

        textView.delegate = self;

        【讨论】:

          【解决方案4】:

          委托是你的 UIViewController 所以它是

          textView.delegate = self;
          

          【讨论】:

            【解决方案5】:

            尝试将自己作为委托人:

            textView.delegate = self;
            

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

                只需将其分配给自己:

                textView.delegate = self;
                

                【讨论】:

                  【解决方案8】:

                  斯威夫特:

                  textView.delegate = self
                  

                  【讨论】:

                    【解决方案9】:

                    确保在您的课程中添加 UIItextFieldDelegate。

                    示例:假设我的课程名为 Pizza,而我的 textField 名为 goodEats

                    class Pizza: UIViewController, UITextFieldDelegate {
                    
                    //Then set the delegate in viewDidLoad 
                    override func viewDidLoad() {
                    super.viewDidLoad()
                    
                        goodEats.delegate = self
                    
                    }
                    }
                    

                    【讨论】:

                      猜你喜欢
                      • 2013-03-29
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-04-12
                      • 2014-12-17
                      • 1970-01-01
                      相关资源
                      最近更新 更多