意见反馈
序言:
现在APP开发都少不了用户意见反馈这一界面,随着,大多新手涌入社会这一行业,为此写出这一文档。
正文:
意见反馈,无谓就是将用户的想法和建议,反馈到开发者这里,根据用户的反馈,做出相应的更改自己的软件。
第一步:
我们要添加3个协议。如下:
UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate
我们创建3对象。如下:
UITableView*_ZSJTableView; UITextField*_ZSJField; UIImageView*ZSJTOOLBackImageView;第三步:
我们在创建2个可变的数组。或者一个,这里我们创建两个。如下;
@property(nonatomic,strong)NSMutableArray*_ZSJDataArray; @property(nonatomic ,strong)NSMutableArray*TextFieldArr;
我们首先布局头部显示的排布。如下;
UIImageView*ZSJNavImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 20, SCREENWight, 44)]; ZSJNavImageView.userInteractionEnabled=YES; ZSJNavImageView.backgroundColor=[UIColor colorWithRed:190.0/255.0 green:190.0/255.0 blue:190.0/255.0 alpha:1]; UIButton*ReturnButton=[UIButton buttonWithType:UIButtonTypeCustom]; ReturnButton.frame=CGRectMake(15, 10, 10, 25); [ReturnButton setImage:[UIImage imageNamed:@"Return.png"] forState:UIControlStateNormal]; [ReturnButton addTarget:self action:@selector(ReturnClick) forControlEvents:UIControlEventTouchUpInside]; [ZSJNavImageView addSubview:ReturnButton]; UILabel*FeedBackLabel=[[UILabel alloc]initWithFrame:CGRectMake(SCREENWight/2-50, 2, 100, 40)]; FeedBackLabel.text=@"意见反馈"; FeedBackLabel.textColor=[UIColor blackColor]; FeedBackLabel.textAlignment=NSTextAlignmentCenter; [ZSJNavImageView addSubview:FeedBackLabel]; [self.view addSubview:ZSJNavImageView];
我们要创建聊天的主要工具,UItableView。如下:
UIView*BackView=[[UIView alloc]initWithFrame:CGRectMake(0, 64, SCREENWight, SCREENHight-50-64)]; UIImageView*BackImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREENWight, BackView.frame.size.height)]; BackImageView.image=[UIImage imageNamed:@"zsj.png"];//添加聊天背景。 [BackView addSubview:BackImageView]; _ZSJTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 64, SCREENWight, BackView.frame.size.height) style:UITableViewStylePlain]; _ZSJTableView.backgroundView=BackView; _ZSJTableView.dataSource=self; _ZSJTableView.delegate=self; _ZSJTableView.separatorStyle=UITableViewCellSeparatorStyleNone; [self.view addSubview:_ZSJTableView];第六步:
我们实现UItableView的几个代理协议。如下:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self._ZSJDataArray.count; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString*ZSJStr=[self._ZSJDataArray[indexPath.row]firstObject]; CGFloat ZSJHight=[ZSJStr boundingRectWithSize:CGSizeMake(200, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSAttachmentAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.height; return ZSJHight+60; } -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ ZSJMessageCell*cell=[tableView dequeueReusableCellWithIdentifier:@"ID"]; if (!cell) { cell=[[ZSJMessageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"]; cell.selectionStyle=UITableViewCellSelectionStyleNone; cell.backgroundColor=[UIColor clearColor]; } NSArray*array=self._ZSJDataArray[indexPath.row]; [cell configModel:array]; return cell; }
我们要自定义Cell。如下:
1、创建几个对象。如下:
//做 UIImageView*LeftImageView; UIImageView*LeftButtonImageView; UILabel*LeftMessageLabel; //有 UIImageView*RightImageView; UIImageView*RightButtonImageView; UILabel*RightMessageLabel;
-(void)configModel:(NSArray*)array;3、我们排布数据显示模式。
LeftImageView=[[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 30, 30)]; LeftImageView.image=[UIImage imageNamed:@"zsjView.png"]; LeftImageView.layer.cornerRadius=15; LeftImageView.layer.masksToBounds=YES; [self.contentView addSubview:LeftImageView]; //右边头像 RightImageView=[[UIImageView alloc]initWithFrame:CGRectMake(ScreWight-35, 5, 30, 30)]; RightImageView.image=[UIImage imageNamed:@"2.jpg"]; RightImageView.layer.cornerRadius=15; RightImageView.layer.masksToBounds=YES; [self.contentView addSubview:RightImageView]; //左边气泡 LeftButtonImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 30)]; //处理拉伸图像 UIImage*leftImage=[UIImage imageNamed:@"fcl_chat_others"]; leftImage=[leftImage stretchableImageWithLeftCapWidth:20 topCapHeight:20]; LeftButtonImageView.image=leftImage; [self.contentView addSubview:LeftButtonImageView]; //左边文字的label LeftMessageLabel=[[UILabel alloc]initWithFrame:CGRectMake(5, 0, 100, 30)]; LeftMessageLabel.numberOfLines=0; LeftMessageLabel.font=[UIFont systemFontOfSize:16]; [LeftButtonImageView addSubview:LeftMessageLabel]; //右边 RightButtonImageView=[[UIImageView alloc]initWithFrame:CGRectMake(200, 0, 100, 30)]; UIImage*image=[UIImage imageNamed:@"fcl_chat_me"]; image=[image stretchableImageWithLeftCapWidth:20 topCapHeight:20]; RightButtonImageView.image=image; [self.contentView addSubview:RightButtonImageView]; RightMessageLabel=[[UILabel alloc]initWithFrame:CGRectMake(5, 0, 100, 30)]; RightMessageLabel.numberOfLines=0; RightMessageLabel.font=[UIFont systemFontOfSize:16]; [RightButtonImageView addSubview:RightMessageLabel];
CGSize size; NSString*str=[array firstObject]; if ([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0) { //iOS7的方法 size=[str boundingRectWithSize:CGSizeMake(200, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName :[UIFont systemFontOfSize:16]} context:nil].size; }else{ size=[str sizeWithFont:[UIFont systemFontOfSize:16] constrainedToSize:CGSizeMake(200, 1000)]; } //取出是自己发送还是对方发送 if ([[array lastObject]isEqualToString:@"0"]) { //对方发送 RightImageView.hidden=YES; RightButtonImageView.hidden=YES; LeftImageView.hidden=NO; LeftButtonImageView.hidden=NO; LeftButtonImageView.frame=CGRectMake(40, 5, size.width+10, size.height+15); LeftMessageLabel.frame=CGRectMake(10, 6, size.width-5, size.height); LeftMessageLabel.text=[array firstObject]; }else{ //自己发送 LeftImageView.hidden=YES; LeftButtonImageView.hidden=YES; RightImageView.hidden=NO; RightButtonImageView.hidden=NO; RightButtonImageView.frame=CGRectMake(ScreWight-40-size.width-10-10, 10, size.width+25, size.height+15); RightMessageLabel.frame=CGRectMake(10, 6, size.width , size.height); RightMessageLabel.text=[array firstObject]; }
我们实现下面的数据输入实现框。如下:
ZSJTOOLBackImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, SCREENHight-50, SCREENWight, 50)]; ZSJTOOLBackImageView.backgroundColor=[UIColor colorWithRed:200.0/255.0 green:200.0/255.0 blue:200.0/255.0 alpha:1]; ZSJTOOLBackImageView.userInteractionEnabled=YES; [self.view addSubview:ZSJTOOLBackImageView]; UIImageView*TextFieldBackView=[[UIImageView alloc]initWithFrame:CGRectMake(10, 8, SCREENWight-70-10, 36)]; TextFieldBackView.userInteractionEnabled=YES; TextFieldBackView.layer.masksToBounds=YES; TextFieldBackView.layer.cornerRadius=6; TextFieldBackView.backgroundColor=[UIColor whiteColor]; [ZSJTOOLBackImageView addSubview:TextFieldBackView]; _ZSJField=[[UITextField alloc]initWithFrame:CGRectMake(5, 4, SCREENWight-70, 35)]; _ZSJField.delegate=self; _ZSJField.returnKeyType=UIReturnKeySend; [TextFieldBackView addSubview:_ZSJField]; UIButton*SeccseBtn=[UIButton buttonWithType:UIButtonTypeCustom]; SeccseBtn.frame=CGRectMake(SCREENWight-65, 6, 50, 46); [SeccseBtn setBackgroundImage:[UIImage imageNamed:@"send.png"] forState:UIControlStateNormal]; [SeccseBtn setTitle:@"发送" forState:UIControlStateNormal]; [SeccseBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [SeccseBtn addTarget:self action:@selector(SDClick:) forControlEvents:UIControlEventTouchUpInside]; [SeccseBtn sizeToFit]; [ZSJTOOLBackImageView addSubview:SeccseBtn];
我们要实现发送代理和方法。如下:
if (_ZSJField.text.length>0) { [self.TextFieldArr addObject:_ZSJField.text]; [self XieRuField]; NSLog(@"%@",self.TextFieldArr); [self._ZSJDataArray addObject:@[_ZSJField.text,@"1"]]; [_ZSJTableView reloadData]; [_ZSJTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self._ZSJDataArray.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; _ZSJField.text=nil; [self performSelector:@selector(BackMessage) withObject:nil afterDelay:1]; }
我们要实现键盘的收藏。如下;
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(showKeyBoard:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hideKeyBoard:) name:UIKeyboardWillHideNotification object:nil];
完整代码下载:
http://download.csdn.net/download/zhoushuangjian511/8352801
原文地址:http://blog.csdn.net/zhoushuangjian511/article/details/42640645