iOS - 文本字段



文本字段的使用

文本字段是一个UI元素,允许应用程序获取用户输入。

下面显示了一个UITextfield。

iOS Text field

文本字段的重要属性

  • 占位符文本,在没有用户输入时显示
  • 普通文本
  • 自动更正类型
  • 键盘类型
  • 回车键类型
  • 清除按钮模式
  • 对齐方式
  • 委托

在xib中更新属性

您可以在实用程序区域(窗口右侧)的属性检查器中更改xib中的文本字段属性。

iOS Tutorial

文本字段委托

我们可以通过右键单击UIElement并将其连接到文件所有者来在Interface Builder中设置委托,如下所示。

iOS Tutorial

使用委托的步骤

步骤1 - 如上图所示设置委托。

步骤2 - 添加您的类响应的委托。

步骤3 - 实现textField委托,重要的文本字段委托如下:

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

步骤4 - 正如名称所示,这两个委托分别在我们开始编辑文本字段和结束编辑时被调用。

步骤5 - 对于其他委托,请参考UITextDelegate协议参考。

示例代码和步骤

步骤1 - 我们将使用为UI元素创建的示例应用程序。

步骤2 - 我们的ViewController类将采用UITextFieldDelegate,我们的ViewController.h文件更新如下:

#import <UIKit/UIKit.h>

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

@end

步骤3 - 然后我们将方法addTextField添加到我们的ViewController.m文件中。

步骤4 - 然后我们在我们的viewDidLoad方法中调用此方法。

步骤5 - 更新ViewController.m中的viewDidLoad如下:

#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 =@"## ";
   
   // 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

步骤6 - 当我们运行应用程序时,我们将获得以下输出。

iOS Tutorial

步骤7 - 委托方法根据用户操作调用。查看控制台输出以了解何时调用委托。

ios_ui_elements.htm
广告