Подтвердить что ты не робот

Обнаружение запуска и остановки редактирования UITextView

Как я могу вызвать код при вводе UITextView (пользовательские краны для его редактирования) и оставить представление (пользовательские отступы оставить его)?

Оцените любую помощь.

4b9b3361

Ответ 1

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html#//apple_ref/occ/intf/UITextViewDelegate

Здесь вы можете найти несколько полезных методов для исследования:

  • textViewDidBeginEditing:
  • textViewDidEndEditing:

Кроме того, чтобы жить UITextView, вы часто должны выполнять действие, которое вызывает [yourTextView resignFirstResponder];

UPD: краткий пример

//you may specify UITextViewDelegate protocol in .h file interface, but it better not to expose it if not necessary
@interface ExampleViewController()<UITextViewDelegate> 

@end

@implementation ExampleViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //assuming _textView is already instantiated and added to its superview
    _textView.delegate = self;
}


//it nice to separate delegate methods with pragmas but it up to your local code style policy
#pragma mark UITextViewDelegate

- (void)textViewDidBeginEditing:(UITextView *)textView {
    //handle user taps text view to type text
}

- (void)textViewDidEndEditing:(UITextView *)textView {
    //handle text editing finished    
}

@end

Пример Swift

class TextViewEventsViewController: UIViewController, UITextViewDelegate {

    @IBOutlet weak var exampleTextView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.exampleTextView.delegate = self
    }

    func textViewDidBeginEditing(_ textView: UITextView) {
        print("exampleTextView: BEGIN EDIT")
    }

    func textViewDidEndEditing(_ textView: UITextView) {
        print("exampleTextView: END EDIT")
    }
}

Ответ 2

Вы также можете реализовать методы делегирования UITextViewDidChange. Я использую приведенный ниже код в своем приложении для получения быстрых заметок. Всякий раз, когда пользователь вводит символ, наблюдатель улавливает это из центра уведомлений и вызывает метод saveText.

Вот как:

Добавьте эту строку в метод viewDidLoad:

[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil];

и эти строки в соответствующем месте вашего кода (например, в разделе, где обрабатываются методы делегирования текстового представления. СОВЕТ. Используйте для этого метки прагмы (#pragma mark - Методы делегатов TextView):

- (void)textViewDidChange:(UITextView *)textView{

    NSLog(@"textViewShouldEndEditing"); // Detect in log output if the method gets called
    [self saveText:nil]; // Call any method you like

}

Ответ 3

используйте делегат и используйте:

- (void) textViewDidBeginEditing:(UITextView *) textView {
    // Your code here
}