位置:首页 > 手机开发 > iOS在线教程 > iOS - Text Field(文本域)

iOS - Text Field(文本域)

使用文本字段

一个文本字段是一个UI元素,使应用程序获取用户输入
UITextField 如下所示
iOS Text field

 

文本字段的重要属性如下:

  • 不需要用户输入占位符文本时显示

  • 普通文本

  • 自动校正类型

  • 键盘类型

  • 返回键的类型

  • 清除按钮模式

  • 对齐方式

  • 委托

更新属性 xib

可以在 xib 更改文本字段属性在属性检查在工具程序区(右侧窗口)。

iOS Tutorial

文本字段的委托

我们可以设置在Interface Builder代表右击UIElement的将它连接到文件的所有者,如下图所示。

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. 委托方法被调用基于用户操作。查看控制台输出,知道什么时候被调用委托。