UITextField

一、让textField中的文字向右偏移一段距离
默认情况下,当向textField输入文字时,文字会紧贴在textField左边框上。可以通过设置textField的leftView,设置一个只有宽度的leftView.这样还不够,因为默认leftView是不显示的.还需要将leftViewMode设置为UITextFieldViewModeAlways.。

  • self.ipTextField.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 8, 0)];
  • //设置显示模式为永远显示(默认不显示)
  • self.ipTextField.leftViewMode = UITextFieldViewModeAlways;

二、只有底边的textField
只需要自定义- (void)drawRect:(CGRect)rect方法,在控件底部绘制一条线即可。
进一步需求:在可编辑状态下,改变底边的颜色。
* 在自定义的- (void)drawRect:(CGRect)rect方法中添加判断if (self.isFirstResponder),设置不同的底边颜色。
* 重写-(BOOL)becomeFirstResponder和-(BOOL)resignFirstResponder,调用[self setNeedsDisplay];方法,让系统调用- (void)drawRect:(CGRect)rect方法,并实现系统默认super方法。
* 绘制之前关闭系统的抗锯齿效果,可以让边框变实:
* CGContextRef context = UIGraphicsGetCurrentContext();
* CGContextSetShouldAntialias(context, NO);

三、添加手势不响应事件

  • 必须要记得设置UITextField的属性userInteractionEnabled = YES;才能进行交互。(类似的还有UIImageView)

四、rightview位置太靠边缘的问题,下面方法可以让rightView向左偏移10

  • 写一个类继承UITextField,重写这个方法:
      • (CGRect) rightViewRectForBounds:(CGRect)bounds {
        CGRect textRect = [super rightViewRectForBounds:bounds];
        textRect.origin.x -= 10;
        return textRect;
        }
    • 这个方法简单一些:如果是UIImageView或者是UIButton,就把UIImageView或者UIButton的宽度,设成宽度比原来大20像素,然后加一句:imageView.contentMode = UIViewContentModeCenter;
      五、取消UIView上所有的UITextField的焦点:
  • [self.view endEditing:YES];

你可能感兴趣的:(UITextField)