意见反馈

序言:

现在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.[email protected]"意见反馈";
    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;

2、我们要创建一个数据传入的方法。如下:

-(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];

4、初入数据的实现。

 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

时间: 2024-08-06 02:20:23

意见反馈的相关文章

ISO UITextView 做意见反馈

应该说每一个都有意见反馈,很简单的功能,镔哥直接做个demo用来以后直接拉用,这么简单的功能,在做项目的时候就不用多考虑了,这样会加快项目进展. // //  ViewController.m //  feedback // //  Created by apple on 14/12/5. //  Copyright (c) 2014年 youdianshang. All rights reserved. // #import "ViewController.h" @interface

IOS开发之——意见反馈UITextView的使用

@interface DMFeedbackViewController ()<UITextViewDelegate,UIAlertViewDelegate>@property (nonatomic, strong) UITextView *feedbackTextView;//意见反馈输入框@property (nonatomic, strong) UILabel *mostLabel;//最多还可以输入@property (nonatomic, strong) UIButton *submi

集成友盟的意见反馈功能

最近一直在开发毕业设计的项目,其中用到了很多自己没接触过的东西,就包括集成友盟SDK的意见反馈模块的内容了.确实用了一点心思在里面,捣鼓了一阵子,中间也遇到了一些问题,关键这问题也不好解决,问大神大神也不一定有去接触这一块,然后网上是有很多资料,但总感觉对我的帮助不是很大,所以,当完成了友盟的这块功能后,就特别想贡献出来,一是为以后方便自己重温这块知识点,二是顺便 发布出来帮助像我这样遇到问题一直寻求解决办法的人.好了,废话不多说了,直接上效果图,然后PO代码! 效果图如下: 当然顺便也po上友

[ 中危 ] dp意见反馈处存储型XSS

XSS平台架设攻击代码,有很多,如我是在http://xss.fbisb.com上架设的. 在 xxx.dianping.com系统意见反馈处插入xss代码提交,而后等待后台管理员点击,可打到其COOKIE,出口IP和内网IP等.危害由原本的边缘,因为已经接触到内网,所以变为中危. RANK  12 == RMB 120 该漏洞的发现应该是源于对这种与后台交互的接口的敏感,和尝试. -913 原文地址:https://www.cnblogs.com/huim/p/8313356.html

51CTO读书频道意见反馈群,只等你来~

亲爱的小伙伴,51CTO读书频道致力于发现一本IT好书,在这里你可以发现更多的IT好书,进行图书的试读.留下书评写出你的读书感受,和大家一起学交流. 感谢您长久以来对读书频道的关注和支持,为了更好的服务大家,现成立51CTO读书会读者反馈群,有什么建议或者吐槽都可以群内或者找小管家反馈喔,群内还会不定期进行赠送图书活动,欢迎大家进群反馈呦,群号如下:808517103,点此立即加群>>> 原文地址:http://blog.51cto.com/readingbook/2132012

51CTO学院讲师意见反馈处【2018版】

5年前的7月1日,51CTO学院平台成立,现在我们已经夯实了基础建设. 随着时间的推移和平台数据量的增大.为了让老师更好地分享技术和培养人才,我们还需要不断改进产品功能,提高讲师体验水平.欢迎各位作者在下方留言,提出宝贵建议和意见,也许你的意见,下一次改进就会兑现.让我们一起来建设一所没有围墙的大学! 51CTO讲师运营团队2018年6月29日 原文地址:http://blog.51cto.com/13843580/2134347

ios开发之--textview意见反馈页面(占位label,字数统计,提交按钮的交互设置)

记录一个页面的功能: textview的占位符,字数统计,提交按钮的交互设置,具体效果图如下: 输入效果: 具体实现代码如下: 1,设置代理 @interface FKViewController ()<UITextViewDelegate> 2,我是直接xib拖拽的控件 @property (weak, nonatomic) IBOutlet UITextView *FKTextView; @property (weak, nonatomic) IBOutlet UILabel *descL

iOS:移动端“用户反馈和客服”的几个平台SDK的介绍

简单阐述: 用户反馈功能几乎是每个app都有的一个功能点,通过反馈功能实现与用户的连接.沟通,随时随地收集用户意见反馈和Bug报告,即时和用户保持沟通,在一定程度上提升了app的竞争力.而给app评分也是一个常见的功能.在目前的技术实现中,有那么几个平台SDK可供使用,分别是:网易七鱼.Bugtags.Instabug.微客服.环信客服.融云客服.阿里百川等. 平台SDK: 1.网易七鱼: 介绍: 无缝融合多渠道 在线客服.呼叫中心.客服机器人.工单系统,由表及里全面打造高效的客户服务体系. 文

umeng用户反馈

在已有项目中集成友盟意见反馈功能 1) 拷贝lib_Umeng_feedback库的清单文件中的资源 a) application b) 权限 c) 清单中的Activity/Service/Boradcast d) appkey配置 2) 在意见反馈事件中调用 new FeedbackAgent(this).startFeedbackActivity(); 注意点: 删除之前的support v4旧的架包, 添加新的架包,然后确保每个都更新为新的架包. 注册后获得key值,清单文件中修改为自己