Как заставить UITextView вызвать метод addTarget



Как я буду использовать метод addTarget с UITextView? Я знаю, что вы можете использовать его с UITextField, но я не могу использовать его с UITextView. Я даже не могу создать действие с помощью UITextView. Есть ли способ сделать это? Заранее спасибо.

631   3  

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+

  1. Добавьте UITextViewDelegate в свой класс
  2. Добавьте делегат в свой textview следующим образом: self.mytextview.делегат = self
  3. Добавьте этот метод:

    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

    Ничего не найдено.