手机鼠标总是自己跳动反回主页截屏跳动

IOS中摇一摇实现截屏(可实现问题反馈的功能)
有一段时间没有更新博客了,今天更新一篇关于最近工作中用到的一个功能,先简单描述一下:我们知道,测试人员在测试客户端产品时,当出现问题或者BUG的时候,都得先对页面截图,然后从相册中选择截图,加上一段描述放到TD库或者直接通过邮件发给开发人员,以方便开发人员进行修改,过程繁琐。通过下面功能的介绍,您可以很方便的让测试人员遇到BUG的时候,摇一摇设备,然后自动截图并保存到应用的沙盒之中。截图保存到沙盒之后,您可以自定义一个问题反馈的页面,对问题进行描述(描述可使用第三方平台,如讯飞语音,实现语音录入的效果)之后,将描述信息和页面截图一起发送给开发人员(可以是邮件,也可以是直接发送到后台)。
  下面来看看功能是怎么实现的。
  首先,定义了一个category:ShakeAndCutter
  UIViewController+ShakeAndCutter.h文件:
#import &UIKit/UIKit.h&
@interface UIViewController (ShakeAndCutter)
  UIViewController+ShakeAndCutter.m文件源码:
&1 #import &UIViewController+ShakeAndCutter.h&
&2 #import &QuartzCore/QuartzCore.h&
&3 #import &TestFeedbackViewController.h&
&5 @implementation UIViewController (ShakeAndCutter)
&7 - (BOOL)canBecomeFirstResponder
&9 & & return YES;
12 #pragma mark - 摇一摇动作处理
14 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
16 & & NSLog(@&began&);
19 - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
21 & & NSLog(@&cancel&);
24 - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
26 & & NSLog(@&end&);
27 & & [self cutterViewToDocument];
29 & & // 这里是自定义的问题反馈页面,也可以直接跳转到系统邮件发送的页面
30 & & TestFeedbackViewController *testFeedbackViewController = [[[TestFeedbackViewController alloc] initWithNibName:@&TestFeedbackViewController& bundle:nil] autorelease];
31 & & [self.navigationController pushViewController:testFeedbackViewController animated:YES];
34 #pragma mark - 截屏处理
36 - (void)cutterViewToDocument
38 & & UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];
40 & & UIGraphicsBeginImageContext(screenWindow.frame.size);
41 & & [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
42 & & UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
43 & & UIGraphicsEndImageContext();
45 & & NSData *screenShotPNG = UIImagePNGRepresentation(screenShot);
46 & & NSError *error =
47 & & [screenShotPNG writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@&Documents&] stringByAppendingPathComponent:@&error.png&] options:NSAtomicWrite error:&error];
  至此,摇一摇和截图功能就已经完成了,那么在应用中怎么使用呢?
对于IOS6.0以上的设备,只需要在项目的pch文件中引进头文件#import &UIViewController+ShakeAndCutter.h&即可(我在IOS6.0.1、IOS6.1.5、IOS7.0.6设备上已经测试过),这样测试工作完成之后,您只需要将这行代码注释或者删除就可以了;
对于IOS6.0以下的设备,在需要实现摇一摇效果的页面,有可能要加入如下代码(手头没有IOS6.0以下的设备,如果大家有的话,帮忙验证一下,非常感谢):
  1.viewDidLoad方法中,添加两行代码:
1 [[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:YES];
2 [self becomeFirstResponder];
& & & & 2.viewDidAppear方法中,添加一行代码:
1 [self becomeFirstResponder];
& & & & 3.viewDidDisappear方法中,添加一行代码:
1 [self resignFirstResponder];
  当然,以上的功能,您也可以实现其他的效果:比如说用户问题的反馈等等,具体可以根据应用的需求而定。
  这里,再附上发送到邮件功能的示例代码:
  MailViewController.h文件源码:
&1 #import &UIKit/UIKit.h&
&2 #import &MessageUI/MessageUI.h&
&3 #import&MessageUI/MFMailComposeViewController.h&
&5 @interface MailViewController : UIViewController&MFMailComposeViewControllerDelegate,
&6 MFMessageComposeViewControllerDelegate&
&8 & & UIButton & & & & & & & & & &*shareToMailB
  MailViewController.m文件源码:
& 1 #import &MailViewController.h&
& 2 #import &Constants.h&
& 4 @interface MailViewController ()
& 8 @implementation MailViewController
&10 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
&12 & & self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
&13 & & if (self) {
&14 & & & & // Custom initialization
&19 - (void)viewDidLoad
&21 & & [super viewDidLoad];
&22 & & // Do any additional setup after loading the view.
&24 & & self.title = @&Bug反馈&;
&26 & & shareToMailButton = [self buttonWithFrame:CGRectMake(20, 100, 280, 40) action:@selector(btnClicked:) withTag:1000];
&27 & & [shareToMailButton setTitle:@&Bug反馈& forState:UIControlStateNormal];
&30 - (void)didReceiveMemoryWarning
&32 & & [super didReceiveMemoryWarning];
&33 & & // Dispose of any resources that can be recreated.
&36 #pragma mark - 自定义方法
&38 - (void)btnClicked:(id)sender
&40 & & UIButton *btnSender = (UIButton *)
&42 & & switch (btnSender.tag)
&44 & & & & case 1000: &// 分享到邮箱
&45 & & & & {
&46 & & & & & & [self showMailPicker];
&47 & & & & & &
&48 & & & & }
&49 & & & & default:
&50 & & & & & &
&54 /*******************************************************************************
&55 &* 方法名称:buttonWithFrame:action:
&56 &* 功能描述:初始化页面按钮,并添加到页面视图
&57 &* 输入参数:
&58 &* 输出参数:
&59 &******************************************************************************/
&60 - (UIButton *)buttonWithFrame:(CGRect)frame action:(SEL)action withTag:(int)tag
&62 & & UIImage *buttonBackgroundImage = [[UIImage imageNamed:@&button_background.png&] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
&63 & & UIImage *disabledButtonBackgroundImage = [[UIImage imageNamed:@&button_background_disabled.png&] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
&65 & & UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
&66 & & button.frame =
&67 & & [button setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal];
&68 & & [button setBackgroundImage:disabledButtonBackgroundImage forState:UIControlStateDisabled];
&69 & & [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
&70 & & [button setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
&71 & & [button addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];
&72 & & button.tag =
&73 & & [self.view addSubview:button];
&78 - (void)showMailPicker
&80 & & Class mailClass = (NSClassFromString(@&MFMailComposeViewController&));
&82 & & if (mailClass !=nil)
&84 & & & & if ([mailClass canSendMail])
&85 & & & & {
&86 & & & & & & [self displayMailComposerSheet];
&87 & & & & }
&88 & & & & else
&89 & & & & {
&90 & & & & & & UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@&&message:@&设备不支持邮件功能& delegate:self cancelButtonTitle:@&确定& otherButtonTitles:nil];
&91 & & & & & & [alert show];
&92 & & & & & & [alert release];
&93 & & & & }
&95 & & else
&97 & & & &&
102 - (void)displayMailComposerSheet
104 & & MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
106 & & // 设置picker的委托方法,完成之后会自动调用成功或失败的方法
107 & & picker.mailComposeDelegate =
108 & & // 添加主题
109 & & [picker setSubject:@&Bug反馈&];
110 & & // 添加收件人
111 & & NSArray *toRecipients = [NSArray arrayWithObject:@&&];
112 & & // 说明:也可以添加多个收件人,代码如下所示:
113 // & &NSArray *toRecipients = [NSArray arrayWithObjects:@&&,@&&,nil];
114 & & // 添加抄送
115 // & &NSArray *ccRecipients = [NSArray arrayWithObjects:@&&,@&&, nil];
116 & & // 添送
117 // & &NSArray *bccRecipients = [NSArray arrayWithObject:@&&];
119 & & [picker setToRecipients:toRecipients];
120 // & &[picker setCcRecipients:ccRecipients];
121 // & &[picker setBccRecipients:bccRecipients];
122 & & // 发送图片附件(其他格式的附件,可以都先转化称NSData类型,然后设置相应的mimeType即可,如txt类型为@&text/txt&,doc类型为@&text/doc&,pdf类型为@&file/pdf&等等)
123 & & NSData *myData = [NSData dataWithContentsOfFile:[[NSHomeDirectory() stringByAppendingPathComponent:@&Documents&] stringByAppendingPathComponent:@&error.png&]];
124 & & [picker addAttachmentData:myData mimeType:@&image/jpeg& fileName:@&error.png&];
125 & & NSString *emailBody = [NSString stringWithFormat:@&&p&文字没有全部显示&/p&&];
127 & & // 直接在HTML代码中写入图片的地址
128 // & &NSString *emailBody = [NSString stringWithFormat:@&&img src=/uploadfile/2014//&' /&&p&我分享了图片&/p&&];
130 & & [picker setMessageBody:emailBody isHTML:YES];
131 & & [self presentModalViewController:picker animated:YES];
132 & & [picker release];
136 - (void)mailComposeController:(MFMailComposeViewController*)controller
137 & & & & & didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
139 & & switch (result)
141 & & & & case MFMailComposeResultCancelled:
142 & & & & & & NSLog(@&Result: Mail sending canceled&); &// 邮件发送取消 &
143 & & & & & &
144 & & & & case MFMailComposeResultSaved:
145 & & & & & & NSLog(@&Result: Mail saved&); &// 邮件保存成功
146 & & & & & &
147 & & & & case MFMailComposeResultSent:
148 & & & & & & NSLog(@&Result: Mail sent&); &// 邮件发送成功
149 & & & & & &
150 & & & & case MFMailComposeResultFailed:
151 & & & & & & NSLog(@&Result: Mail sending failed&); &// 邮件发送失败
152 & & & & & &
153 & & & & default:
154 & & & & & & NSLog(@&Result: Mail not sent&);
155 & & & & & &
157 & & [self dismissModalViewControllerAnimated:YES];
160 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
162 & & NSLog(@&messageComposeViewController&);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'我的联想手机,屏幕老是自己会乱跳动,有时候点还没反应 这是怎么回事?_百度知道
我的联想手机,屏幕老是自己会乱跳动,有时候点还没反应 这是怎么回事?
cn/lenovo/wsi/station/servicestation/default:更多问题您可以咨询idea论坛://bbs://bbs:///forum?intcmp=MIDH" target="_blank">http?intcmp=FM_LBBS_baidureply" target="_blank">您好.lenovomobile.php!根据您的描述.com/forum,建议您将手机带到联想的手机服务中心进行检测与维修.://lenovobbs://support1.lenovo?intcmp=FM_LBBS_baidureplyThink论坛?intcmp=FM_LBBS_baidureply联想乐社区.aspx:(建议您去前先联系服务中心)联想服务微信随时随地为您提供多种自助及人工服务://support1?articleid=34088" href="http?articleid=34088若问题还不能解决.com,请联系联想服务微信工程师.lenovo.html.html://support1?intcmp=MIDH" target="_blank">如需更多详细咨询.com尊敬的联想用户您好
人类失去联想,世界将会怎样!
主营:IT网络服务
其他类似问题
为您推荐:
联想手机的相关知识
其他1条回答
导致手机卡
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁联想A370E 编辑短信的时候,触摸键盘字母总是点不准,乱跳怎么回事,还有怎么手机截图。_百度知道
联想A370E 编辑短信的时候,触摸键盘字母总是点不准,乱跳怎么回事,还有怎么手机截图。
乱跳怎么回事,求解,显示连接实则连不上网络,触摸键盘字母总是点不准。手机WIFI打开时间一长,还有怎么手机截图联想A370E 编辑短信的时候。求解
提问者采纳
有可能是输入法的问题看其他界面是否正常。安卓4,你可以尝试更换其他的输入法如百度等
其他类似问题
lenovo、硬件触屏模块或是主板的异常.html" target="_blank">/lenovo/wsi/station/servicestation/default。而wifi连接使用异常的问题.cn/lenovo/wsi/station/servicestation/default://support1:http?q-110856,或是恢复出厂设置操作操作.lenovomobile,您好,A370e不支持电源键+音量减键截图操作、系统层面(软件冲突://ask。根据描述.com/,请了解,我们建议您可以参考这个帖子自助排查操作一下,涉及的可能情况有很多.com/.com,祝您生活愉快.lenovomobile.aspx,我们建议您抽空到当地的联想售后服务中心,手机触屏飘屏.html若仅仅在输入文字时出现,较大的可能是输入法异常或是软件冲突异常导致的。建议您可下载一些第三方的截图软件来操作.lenovo,或是涉及硬件相关的异常导致的、解决。可尝试更换输入法,排除无线wifi本身及系统的问题.0以上系统才支持,有可能是主板wifi模块故障导致的、失灵等.com://ask、系统文件不稳定),给您的设备使用带来不便了、磁场、静电等)://support1?q-110856?intcmp=MIDH另外。由于我们远程看不到您手机的具体情况
Never stand still
主营:联想手机平板电脑
为您推荐:
编辑短信的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁路过的大神帮忙看看,怎样实现反截屏,就是通过一种操作实现对截屏键,截屏软件的屏蔽,使得不能截屏或者截得的图片是黑的,怎么实现???在线等。。。注:不需要清空剪切板
有模拟成显示器的视频采集硬件,支持HDMI或者DVI输入,某宝两千块钱。驱动终究只是个软件,拗不过硬件的。
就算你能防的住一般的截图软件,但你防不住驱动。&br&&br&能注册过滤驱动,要么你已经干掉了数字签名验证,要么你自带WHQL签名,后者我觉得不可能(成本太高)&br&&br&那么,你能防得住一般截图软件,就不怕对方也挂一个内核驱动?要知道截图的本质是从显存里拿数据,是读内存的动作,你觉得有什么办法能让内核驱动禁止访问某段内存吗?我觉得难。
就算你能防的住一般的截图软件,但你防不住驱动。能注册过滤驱动,要么你已经干掉了数字签名验证,要么你自带WHQL签名,后者我觉得不可能(成本太高)那么,你能防得住一般截图软件,就不怕对方也挂一个内核驱动?要知道截图的本质是从显存里拿数据,是读内…
已有帐号?
无法登录?
社交帐号登录
业余码农 火车单车驴 电子三星s3,按住电源和home键跳出来的是“我的资讯”,无法截屏,怎么截屏?_百度知道
三星s3,按住电源和home键跳出来的是“我的资讯”,无法截屏,怎么截屏?
三星s3,按住电源和home键跳出来的是“我的资讯”,无法截屏,怎么截屏?
尊敬的三星用户您好:若手机经常自动弹出推送信息/广告,建议您:1.打开通知栏,查看通知栏右上方是否有“清除”字样。若有,请点击清除通知栏信息。2.待机界面-下滑屏幕顶帘-查找某条广告信息并按住不松手-会提示“应用程序”-点击进入后取消“显示通知”前面的对憨氦封教莩寄凤犀脯篓勾即可。3.自动弹出的广告推送信息,可能是下载的第三方软件的推送信息。建议通过该软件设置选项禁用推送信息的功能。4.若无效,可能和下载的软件有关,建议将对应软件卸载删除。5.备份手机数据(电话簿、短信息、多媒体文件等),恢复出厂设置(进入手机设定--重置-恢复出厂设定)如果恢复出厂设置问题依然存在,建议将手机送至就近的三星服务中心进行检测及进一步处理。建议您在三星官网进行“预约到店”维修申请,享受优先维修服务:预约成功后,请携带您的机器、发票及保修卡按时访问您预约的服务中心。评价、建议、吐槽,请点击:.cn/survey
三星电子中国区售后服务总部
主营:电子产品
其他类似问题
为您推荐:
其他1条回答
根据描述,三星憨氦封教莩寄凤犀脯篓S3系列手机截图方法分别为:1、掌擦法(设定-动作-手掌滑动以捕捉);2、长按“Home键+电源键”;若按键方法不能完成截屏功能,建议您尝试第一种掌擦法。
我想用第二种方法怎么设置?
根据描述,设置方法如下:设定-动作-手掌滑动以捕捉。
截屏的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 鼠标总是跳动 的文章

 

随机推荐