一些关于UIALertView的使用,在开发一些小项目中,对于一些提示语,一些输入框,通常都是直接使用native的alertView即可。而且,UIAlertView除了本身自带几种格式外,还可以放置多种控件,包括pickupView、UItextView、UITextField等,例如要实现像微博的多行文本输入,并显示当前输入数字的功能
//
-(void)addInfo {
//对成员变量初始化
_textView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, self.view.width, self.view.height)];
_textView.delegate = self;
//获取曾填写过的数据(有一个发送请求可返回上次填写的方法,在此不予显示)
NSString *lastInfo = *********;
if (lastInfo != 0) {
_textView.text = lastInfo;
}
//创建一个alertView
_alertView = [[UIAlertView alloc]initWithTitle:@"请填写备注" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//将文本框添加到alertView上(注意ios7之后不可直接用addSubiew的方法了
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
[_alertView setValue:_textView forKey:@"accessoryView"];
}else{
[_alertView addSubview:_textView];
}
//显示alertView
[_alertView show]
}
//#pragma mark - AlertViewDelegate
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 1:{//确定
NSString *lastInfo = *********;
NSString *newText = _textView.text;
if (newText.length == 0) {//内部的提示方法
[****** ******:@"你还未填写备注"];
return;
} else if([newText isEqualToString:sellerMemo]) {
[****** ******:@"你还未做任何更改"];
return;
}else{
[self changeInfo:newText];
}
}
break;
default:
break;
}
}
//当textView在编辑时会调用改方法
- (void)textViewDidChange:(UITextView *)textView {
NSInteger number = [_textView.text length];
//设置一个提示输入字数的标签,frame根据各自需求设置
UILabel *statusLabel = [[UILabel alloc] initWithFrame:CGRectMake(*,*,*,*)];
statusLabel.font = [UIFont systemFontOfSize:9];
statusLabel.textAlignment = NSTextAlignmentLeft;
statusLabel.backgroundColor = [UIColor whiteColor];
//140减去当前已输入的数,显示还可以输入的数量
statusLabel.text = [NSString stringWithFormat:@"%ld",(140-(long)number)];
//添加到textView上
[_textView addSubview:statusLabel];
}
//对于超出字数限制时,也可在这里做处理
-(void)textViewDidEndEditing:(UITextView *)textView{
}
/**
* 添加备注
*/
- (void)changeInfo:(NSString *)info {
NSInteger number = [_textView.text length];
if (number > 200) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请不要超过200个字" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
}
//将其存起来,当结束回到controller时会立即刷新发送更改数据的请求给服务器,即可实现修改
@"内部变量" = info;
[****** ******:@"备注添加成功"];
}