UITextViewDelegate: как установить делегат в коде (не в IB ...) - PullRequest
1 голос
/ 22 апреля 2011

Предположим, у вас есть UITextView, и вы хотите установить делегата этого UITextView.

Первое, что вы поместите в заголовочный файл:

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

Затем, если вы использовали IB, вы щелкаете UITextView и подключаете выход делегата с владельцем файла. Это позволит вам использовать такие команды, как - (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView { и т. Д.

Теперь предположим, что вы хотели сделать это программно. Я нашел это предложение здесь:

textView.delegate = yourDelegateObject;

Но я понятия не имею, что означает «yourDelegateObject». В IB я соединяюсь с владельцем файла ... так что в коде это должно быть textView.delegate = владелец файла. Но каков Владелец Файла в этом случае? myViewController? UIViewController?

Полагаю, я не совсем понимаю принцип. Любая помощь будет принята с благодарностью.

Ответы [ 8 ]

2 голосов
/ 22 апреля 2011

Как уже говорили другие, установите свойство delegate для UITextView. Наиболее распространенный объект делегата - self.

Для уточнения "объекта делегата": объект делегата - это класс (реализующий протокол UITextViewDelegate), на который вы хотите, чтобы события реагировали. Например, если вы используете экземпляр класса вместо self, UITextView отправит свои события реализациям методов делегата в этом классе.

2 голосов
/ 22 апреля 2011

Попробуйте поставить себя в качестве делегата:

textView.delegate = self;

Так что вам нужно поместить функцию - (BOOL) textViewShouldBeginEditing: (UITextView *) aTextView в реализацию вашего контроллера.

2 голосов
/ 22 апреля 2011

Делегатом является ваш UIViewController, поэтому он

textView.delegate = self;
2 голосов
/ 22 апреля 2011

yourDelegateObject = self.

вы можете использовать

textView.delegate = self;

2 голосов
/ 22 апреля 2011

Скорее всего, вы хотите назначить делегата для текущего объекта контроллера, то есть self:

textView.delegate = self;
1 голос
/ 22 апреля 2011

Просто назначьте его себе:

textView.delegate = self;
1 голос
/ 22 апреля 2011

Делегатом может быть любой объект, это не обязательно должен быть класс, в котором создается textField, хотя обычно это так - всякий раз, когда это так, вы устанавливаете его на self , хотя можетеустановите его для любого экземпляра объекта, который соответствует протоколу (всякий раз, когда для объекта определен формальный протокол).

0 голосов
/ 23 марта 2016

Свифт:

textView.delegate = self
...