Как заставить UITextView вызвать метод addTarget
Как я буду использовать метод addTarget с UITextView? Я знаю, что вы можете использовать его с UITextField, но я не могу использовать его с UITextView. Я даже не могу создать действие с помощью UITextView. Есть ли способ сделать это? Заранее спасибо.
3 ответов:
Основываясь на информации в комментариях, вы хотите обновить локальную переменную, когда пользователь вводит
UITextView.Поэтому попробуйте что-то вроде этого (я предполагаю, что у вас есть подкласс UIViewController, и его представление имеет UITextView в вопросах в качестве подвида):
В контроллере вида создайте
IBOutletдля вашегоUITextView, Если используется IB, или просто регулярную ссылку, если нет. Затем еще одно свойство для переменнойNSString, в которую вы хотите сохранить текст.Примечание: убедитесь, что этот контроллер вида соответствует протоколу
UITextViewDelegate, как показано ниже.@interface BBViewController () <UITextViewDelegate> //Note the protocol here @property (weak, nonatomic) IBOutlet UITextView *textView; @property (strong, nonatomic) NSString *userInput; @endЗатем подключите делегат представления текста: (или сделайте это в IB)
- (void)viewDidLoad { [super viewDidLoad]; self.textView.delegate = self; }Затем, когда пользователь взаимодействует с текстом в этом текстовом представлении, он отправляет соответствующие методы делегирования, и вы можете соответствующим образом обновить переменную.
#pragma mark - UITextViewDelegate - (void)textViewDidChange:(UITextView *)textView { self.userInput = textView.text; NSLog(@"userInput %@", self.userInput); //Just an example to show the variable updating }
Для swift версии 3+
- Добавьте UITextViewDelegate в свой класс
- Добавьте делегат в свой textview следующим образом: self.mytextview.делегат = self
Добавьте этот метод:
Func textViewDidChange(_ textView: UITextView) {
print("entered text:\(textView.text)")}
Вы можете добиться того, чего хотите, используя уведомления.
//Listen to notifications : NotificationCenter.default.addObserver(textView, selector: #selector(textDidChange), name: NSNotification.Name.UITextViewTextDidChange, object: nil) //the function called when changed @objc private func textDidChange() { ... } //make sure to release to observer as well NotificationCenter.default.removeObserver(textView, name: NSNotification.Name.UITextViewTextDidChange, object: nil)
Comments