iOS – 文本字段(Text Field)

      iOS – 文本字段(Text Field)无评论

文本字段的使用

文本字段是一个用户界面元素,通过应用程序来获取用户输入。

一个UITextfield如下所示:

textfeild

重要的文本字段的属性

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

更新xib中的属性

可以在Utility area(实用区域,窗口的右侧)更改xib在属性查看器中的文本字段属性。

UITextField_Attribute


文本字段委托

我们可以通过右击 UIElement 界面生成器中设置委托并将它连接到文件的所有者,如下所示:

TextfieldDelegate

使用委托的步骤:

  • 1.设置委托如上图所示
  • 2.添加委托到您的响应类
  • 3.执行文本字段代表,重要的文本字段代表如下:
- (void)textFieldDidBeginEditing:(UITextField *)textField
- (void)textFieldDidEndEditing:(UITextField *)textField
  • 4.正如其名称所暗示,上述两个委托分别叫做编辑的文本字段和结束编辑
  • 5. 其他的委托请查看 UITextDelegate Protocol 参考手册。

  • 实例

    以下我们使用简单的实例来创建UI元素

    ViewController 类将采用UITextFieldDelegate,修改ViewController.h文件,如下所示:

    将方法addTextField添加到我们的 ViewController.m 文件

    然后在 viewDidLoad 方法中调用此方法

    在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

    运行该应用程序会看到下面的输出

    TextfieldOutput

    委托调用的方法基于用户操作。要知道调用委托时请参阅控制台输出。

    沟通交流合作请加微信!