代码之家  ›  专栏  ›  技术社区  ›  user353877

如何判断哪个对象调用了委托方法(目标C)

  •  1
  • user353877  · 技术社区  · 16 年前

    假设您的类中有两个对象(例如,一个UITextView,但它可以是任何类型)。当文本视图更改时,您有一个委托方法来捕获更改。但是,如何通过编程来判断哪个对象被更改并调用了委托??

    (可能的想法)基本上如何通过委托获得对象引用的变量名?

    我必须错过一些东西,因为这应该是微不足道的,但我找不到任何东西。 注意:在这种情况下,不可能仅仅将类分解为只有一个对象(通过绕过歧义)。我找了一些东西,比如为nsobjects分配变量名,但没有找到。

    这是委托方法

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    
    }
    
    3 回复  |  直到 16 年前
        1
  •  0
  •   Nick Forge    16 年前

    假设你有两个 UITextView 名为的属性 textView1 和 textView2 ,它被设置为两个文本视图(通过ib或在代码中),您可以这样做:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
        if (textView == self.textView1) {
            // Handle textView1
        }
        if (textView == self.textView2) {
            // Handle textView2
        }
    }
    
        2
  •  0
  •   reflog    16 年前

    通常,委托方法将接收以下形式的参数 :(id) sender 哪里 sender 是发送消息的实际组件,您可以将其与字段进行比较 sender == textField1

        3
  •  0
  •   JeremyP    16 年前
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    

    我加下划线的那一点。正是文本视图发送了委托消息。