首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

UITextField+小结(zhuan)

2012-07-24 
UITextField+总结(zhuan)1.UITextField的初始化和设置1textField [[UITextField alloc] initWithFrame:C

UITextField+总结(zhuan)
1.UITextField的初始化和设置








1

textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];





2

[textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型





3

textField.placeholder = @"password"; //默认显示的字





4

textField.secureTextEntry = YES; //密码





5

textField.autocorrectionType = UITextAutocorrectionTypeNo;





6

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;





7

textField.returnKeyType = UIReturnKeyDone;





8

textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X





9

textField.delegate = self;



2.要实现的Delegate方法,关闭键盘





view sourceprint?





1

- (BOOL)textFieldShouldReturn:(UITextField *)textField





2

{





3

    [self.textField resignFirstResponder];





4

    return YES;





5

}






最右侧加图片是以下代码,
    UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
    text.rightView=imgv;
    text.rightViewMode = UITextFieldViewModeAlways;   


如果是在最左侧加图片就换成:
text.leftView=imgv;
text.leftViewMode = UITextFieldViewModeAlways;   
UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment
所以想让UITextField里面的text垂直居中可以这样写:
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;












查看函数的方法:

按住command键双击进入函数声明

按住alt键双击进入doc文档

///////////////////////////////////////////////////////////////




文本框常用方法:

如何用程序删除文本框中选中的文本

[textView delete: nil];

///////////////////////////////////////////////////////////////




如何限制文本框只能输入数字:

建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。



- (BOOL) isPartialStringValid: (NSString **) partialStringPtr

        proposedSelectedRange: (NSRangePointer) proposedSelRangePtr

               originalString: (NSString *) origString

        originalSelectedRange: (NSRange) origSelRange

             errorDescription: (NSString **) error

{

    NSCharacterSet *nonDigits;

    NSRange newStuff;

    NSString *newStuffString;

           

    nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

    newStuff = NSMakeRange(origSelRange.location,

                           proposedSelRangePtr->location

                           - origSelRange.location);

    newStuffString = [*partialStringPtr substringWithRange: newStuff];

           

    if ([newStuffString rangeOfCharacterFromSet: nonDigits

                                                                                             options: NSLiteralSearch].location != NSNotFound) {

        *error = @"不是数字";

        return (NO);

    } else {

        *error = nil;

        return (YES);

    }

           

}

///////////////////////////////////////////////////////////////




从文本框获取十六进制数据的代码

char singleNumberString[3] = {'\0','\0','\0'};

uint32_t singleNumber = 0;

uint32_t i = 0;

NSMutableData *data = [NSMutableData data];

//从文本框获取到得数据




const char *buf = [[_hexToSendTextField text] UTF8String];

//转换为十六进制




for(i = 0; i < strlen(buf); i+=2)

{

if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))

{

singleNumberString[0] = buf;

singleNumberString[1] = buf[i+1];

sscanf(singleNumberString, "%x", &singleNumber);

[data appendBytes:(void*)(&tmp) length:1];

}

else

{

break;

}

}

//输出




NSLog(@"%@", data);

/////////////////////////////////////////////////////////////




点击 UITextView 输入文字,光标都从最初点开始




- (void)textViewDidChangeSelection:(UITextView *)textView

{

    NSRange range;

    range.location = 0;

    range.length = 0;

    textView.selectedRange = range;

}

///////////////////////////////////////////////////////////




软键盘

在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图:

弹出键盘:

[username becomeFirstResponder];

取消键盘:

[username resignFirstResponder];

密码保护:

password.secureTextEntry=YES;




//////////////////////////////////////////////////////////////////




1.UITextField的初始化和设置

  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];

  [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型




  textField.placeholder = @"password"; //默认显示的字




  textField.secureTextEntry = YES; //密码




  textField.autocorrectionType = UITextAutocorrectionTypeNo;

  textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

  textField.returnKeyType = UIReturnKeyDone;

  textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X




  textField.delegate = self;

2.要实现的Delegate方法,关闭键盘

  - (BOOL)textFieldShouldReturn:(UITextField *)textField

  {

      [self.textField resignFirstResponder];

      return YES;

  }

3. 可以在UITextField使用下面方法,按return键返回

-(IBAction) textFieldDone:(id) sender

{

[textFieldName resignFirstResponder];

}

链接TextField控件的"Did end on exit"

////////////////////////////////////////////////////////////////////




限制输入文本的长度

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

    if (range.location >= MAX_LENGTH)

        return NO; // return NO to not change text




    return YES;

}




if (textField.text.length >= 10 && range.length == 0)

    return NO;

return YES;




- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

if ([textField.text length] > MAXLENGTH)

{

  textField.text = [textField.text substringToIndex:MAXLENGTH-1];

  return NO;

}

return YES;

}

//////////////////////////////////////////////////////////////////////




使用UITextFieldDelegate来隐藏键盘

在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。

其实很简单, 需要三步:

1. 在你的控制器类中,加入UITextFieldDelegate这个协议

如:@interface AddItemViewController : UIViewController <UITextFieldDelegate>

2. 在使用了UITextFieldDelegate协议的控制器类的实现中,加入- (BOOL)textFieldShouldReturn:方法。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {



        [textField resignFirstResponder];

        return YES;

}

//设置焦点:




[UITextField becomeFirstResponder];

3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类,将 TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。或者使用代码方式,指定相关TextField的delegate变量。

- (void)viewDidLoad

{

    [super viewDidLoad];

        itemNameField.delegate = self;

        priceField.delegate = self;

}

热点排行