iOS - Campo di testo

Uso del campo di testo

Un campo di testo è un elemento dell'interfaccia utente che consente all'app di ricevere l'input dell'utente.

Un campo UIText è mostrato di seguito.

Proprietà importanti del campo di testo

  • Testo segnaposto che viene mostrato in assenza di input dell'utente
  • Testo normale
  • Tipo di correzione automatica
  • Tipo di tastiera
  • Tipo di chiave di ritorno
  • Modalità pulsante Clear
  • Alignment
  • Delegate

Aggiornamento delle proprietà in xib

Puoi modificare le proprietà del campo di testo in xib nell'inspector degli attributi nell'area delle utilità (lato destro della finestra).

Delegati del campo di testo

È possibile impostare delegato nel generatore di interfacce facendo clic con il pulsante destro del mouse su UIElement e collegarlo al proprietario del file come mostrato di seguito.

Passaggi nell'utilizzo dei delegati

Step 1 - Impostare delegato come mostrato nella figura sopra.

Step 2 - Aggiungi delegato a cui risponde la tua classe.

Step 3 - Implementa i delegati textField, i delegati del campo di testo importanti sono i seguenti -

- (void)textFieldDidBeginEditing:(UITextField *)textField 
- (void)textFieldDidEndEditing:(UITextField *)textField

Step 4 - Come suggerisce il nome, i due delegati precedenti vengono chiamati una volta che iniziamo a modificare il campo di testo e terminiamo rispettivamente la modifica.

Step 5 - Per altri delegati, fare riferimento al protocollo di riferimento UITextDelegate.

Codice e passaggi di esempio

Step 1 - Useremo l'applicazione di esempio creata per gli elementi dell'interfaccia utente.

Step 2 - La nostra classe ViewController adotterà UITextFieldDelegate e il nostro ViewController.h il file viene aggiornato come segue:

#import <UIKit/UIKit.h>

// You can notice the adddition of UITextFieldDelegate below
@interface ViewController : UIViewController<UITextFieldDelegate>

@end

Step 3 - Quindi aggiungiamo un metodo addTextField al nostro file ViewController.m.

Step 4 - Quindi chiamiamo questo metodo nel nostro metodo viewDidLoad.

Step 5 - Aggiorna viewDidLoad in ViewController.m come segue -

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   //The custom method to create our textfield is called
   
   [self addTextField];
   // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}

-(void)addTextField {
   // This allocates a label 
   UILabel *prefixLabel = [[UILabel alloc]initWithFrame:CGRectZero];
   
   //This sets the label text
   prefixLabel.text [email protected]"## ";
   
   // This sets the font for the label
   [prefixLabel setFont:[UIFont boldSystemFontOfSize:14]];
   
   // This fits the frame to size of the text
   [prefixLabel sizeToFit];
	
   // This allocates the textfield and sets its frame
   UITextField *textField = [[UITextField  alloc] initWithFrame:
   CGRectMake(20, 50, 280, 30)];
   
   // This sets the border style of the text field 
   textField.borderStyle = UITextBorderStyleRoundedRect;
   textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
   [textField setFont:[UIFont boldSystemFontOfSize:12]];
   
   //Placeholder text is displayed when no text is typed
   textField.placeholder = @"Simple Text field";
   
   //Prefix label is set as left view and the text starts after that
   textField.leftView = prefixLabel;
  
   //It set when the left prefixLabel to be displayed
   textField.leftViewMode = UITextFieldViewModeAlways;
  
   // Adds the textField to the view.
   [self.view addSubview:textField];
  
   // sets the delegate to the current class
   textField.delegate = self;
}

// pragma mark is used for easy access of code in Xcode
#pragma mark - TextField Delegates

// This method is called once we click inside the textField
-(void)textFieldDidBeginEditing:(UITextField *)textField {
   NSLog(@"Text field did begin editing");
}

// This method is called once we complete editing
-(void)textFieldDidEndEditing:(UITextField *)textField {
   NSLog(@"Text field ended editing");
}

// This method enables or disables the processing of return key
-(BOOL) textFieldShouldReturn:(UITextField *)textField {
   [textField resignFirstResponder];
   return YES;
}

- (void)viewDidUnload {
   label = nil;
   [super viewDidUnload];
}
@end

Step 6 - Quando eseguiamo l'applicazione, otterremo il seguente output.

Step 7- I metodi delegati vengono chiamati in base all'azione dell'utente. Vedere l'output della console per sapere quando vengono chiamati i delegati.