fields iphone objective-c uitextview editing

iphone - fields - text field ios 11



Detectar iniciar y detener ediciĆ³n UITextView (3)

¿Cómo puedo llamar a algún código al ingresar un UITextView (los toques del usuario para editarlo) y dejar la vista (el toque del usuario para dejarlo)?

Aprecio cualquier ayuda.


También puede implementar los métodos de delegado UITextViewDidChange . Uso el código de abajo en mi aplicación para tomar notas rápidas. Cuando el usuario ha ingresado un carácter, el observador lo captura desde el centro de notificaciones y llama al método saveText .

Así es cómo:

Agregue esta línea al método viewDidLoad :

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

y estas líneas en el lugar apropiado en su código (como en la sección que maneja los métodos de delegado de la vista de texto. CONSEJO: Use marcas Pragma para esto ( #pragma mark - TextView Delegate Methods ):

- (void)textViewDidChange:(UITextView *)textView{ NSLog(@"textViewShouldEndEditing"); // Detect in log output if the method gets called [self saveText:nil]; // Call any method you like }


usar el delegado y usar:

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


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

Aquí puedes encontrar varios métodos útiles para investigar:

  • textViewDidBeginEditing:
  • textViewDidEndEditing:

Además, para ver el UITextView vivo, a menudo se debe implementar una acción que llame a [yourTextView resignFirstResponder];

Ejemplo de Objective-C

//you may specify UITextViewDelegate protocol in .h file interface, but it''s 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''s nice to separate delegate methods with pragmas but it''s 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

Ejemplo de 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") } }