123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604 |
- //
- // AppDelegate.m
- // JSJPCoach
- //
- // Created by apple on 2017/3/10.
- // Copyright © 2017年 Danson. All rights reserved.
- //
- #import "AppDelegate.h"
- #import "ViewController.h"
- #import "LoginVC.h"
- #import "ADView.h"
- #import "MyMsgVC.h"
- #import <SMS_SDK/SMSSDK.h>
- #import "MyUINavigationController.h"
- #import "TheoryTrainVC.h"
- //客服
- #import "QMProfileManager.h"
- //bugly腾讯bug统计
- #import <Bugly/Bugly.h>
- @interface AppDelegate ()<UIScrollViewDelegate,UIAlertViewDelegate,BMKGeneralDelegate,GeTuiSdkDelegate, UNUserNotificationCenterDelegate>
- {
- UIScrollView* scroll;
-
- //no use
- NSString *pushType;
- NSString *pushID;
- }
- @end
- @implementation AppDelegate
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- //异常统计
- #ifdef DEBUG
- //do sth1.
- #else
- [Bugly startWithAppId:BUGLY_APP_ID];
- #endif
- self.window = [[UIWindow alloc] initWithFrame:kFrame];
- [self.window makeKeyAndVisible];
-
- //初始化地图
- _mapManager = [[BMKMapManager alloc]init];
- // 如果要关注网络及授权验证事件,请设定 generalDelegate参数
- BOOL ret = [_mapManager start:@"d6Zg7kcdIcasgMKsFdUzyPLyFNhkkvXx" generalDelegate:self];
- if (!ret) {
- NSLog(@"manager start failed!");
- }
-
- //客服注册
- QMProfileManager *manger = [QMProfileManager sharedInstance];
- [manger loadProfile:@"sinatechcn" password:@"321456"];//8062moor 123456
-
- // 通过个推平台分配的appId、 appKey 、appSecret 启动SDK,注:该方法需要在主线程中调用
- [GeTuiSdk startSdkWithAppId:kGtAppId appKey:kGtAppKey appSecret:kGtAppSecret delegate:self];
- // 注册 通知(本地/远程)
- [self registerRemoteNotification];
-
- /*
- 若用户点击icon启动,lauchOptions内无数据
- */
- #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
- //didReceiveNotificationResponse 统一处理
-
-
- #else
- //本地通知
- // 处理退出后通知的点击,程序启动后获取通知对象,如果是首次启动还没有发送通知,那第一次通知对象为空,没必要去处理通知(如跳转到指定页面)
- if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
-
- //ios<10的话,对应的didreceiveLoacal说是接受不到消息(要求前/后台),这一点在ios10以后解决了
- UILocalNotification *localNotifi = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
- NSDictionary *userInfo = localNotifi.userInfo;
- if (userInfo[@"theoryTrainVC_classId"]) {
- //理论计时提醒本地推送
- [self gotoTheory];
- return YES;
- }
- }
-
- //远程通知
- if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey])
- {
- //关于这个方法远程和进程不一样 一个是userinfo字典。一个是本地通知
- NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
-
- //这里不用判断重复消息
- NSString *msgId = [userInfo[@"_gmid_"] componentsSeparatedByString:@":"][1];
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setObject:msgId forKey:@"remoteNotifymsgId"];
- [userDefaults synchronize];
-
- NSString *jsonStr = userInfo[@"payload"];
- if ([jsonStr length] != 0) {
- NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
- if (data) {
- NSDictionary * payloadDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
- pushType = [NSString stringWithFormat:@"%@",payloadDic[@"code"]];
- pushID = [NSString stringWithFormat:@"%@",payloadDic[@"id"]];
-
- if (pushType != 0) {
- [self gotoPush];
- }else{
- //其它信息
- [self gotoLoad];
- [self showMsgByArertWithTitle:payloadDic[@"title"] message:payloadDic[@"body"]];
- }
- return YES;
- }
- }
- }
-
- #endif
-
- loadADPaths();
-
- //判断跳转页面 这样每次更新版本 都会有导航页
- NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
- NSString *vesionNow = [infoDic objectForKey:@"CFBundleShortVersionString"];
-
- if (![defUser.isWelcomed isEqualToString:vesionNow]) {
-
- //刚刚下载 要加载一次广告 存本地
- defUser.isWelcomed = vesionNow;
- [self makeLaunchView];
- loadADPaths();
- }else{
-
- //在这里搞个 广告页面 加载广告
- [ADView showADView];
- @try {
- //是否为新版本
- [self onCheckVersion];
- }
- @catch (NSException *exception) {
-
- }
- @finally {
- [self gotoLoad];
- }
- }
-
- return YES;
- }
- #pragma mark 推送注册
- /** 注册 APNs */
- - (void)registerRemoteNotification {
- /*
- 警告:Xcode8 需要手动开启"TARGETS -> Capabilities -> Push Notifications"
- */
-
- if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
-
- UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
- center.delegate = self;
- [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCarPlay) completionHandler:^(BOOL granted, NSError *_Nullable error) {
- if (!error) {
- NSLog(@"request authorization succeeded!(iOS >= 10.0)");
- }
- }];
-
- } else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
- UIUserNotificationType types = (UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge);
- UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
- [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
- }
-
- //远程需添加
- [[UIApplication sharedApplication] registerForRemoteNotifications];
- }
- /** 远程通知注册成功委托 */
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
-
- NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
- token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
- // NSLog(@"\n>>>[DeviceToken Success]:%@\n\n", token);
-
- // 向个推服务器注册deviceToken
- [GeTuiSdk registerDeviceToken:token];
- }
- /** 远程通知注册失败委托 */
- - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
-
- NSLog(@"FailToRegisterForRemoteNotificationsWithError:%@",error);
-
- }
- //iOS7.0 以后支持 APP 后台刷新数据,会回调 performFetchWithCompletionHandler 接口。为保证个推SDK的数据刷新,需在该回调接口中调用[GeTuiSdk resume]方法帮助个推 SDK 刷新数据。
- - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
- /// Background Fetch 恢复SDK 运行
- [GeTuiSdk resume];
- completionHandler(UIBackgroundFetchResultNewData);
- }
- #pragma mark - iOS < 10
- /*
- 1.点击通知栏,
- 2.要求app未被杀死,如果app是terminate就去didfinishlaunch获取;这一点在ios10以后改善了
- */
- //-----本地推送
- - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
- //ios<10 点击弹窗
- if (notification.userInfo[@"theoryTrainVC_classId"]) {
- [self gotoTheory];
- }
- }
- //------远程推送
- //处理APNs 通知点击事件,统计有效用户点击数
- - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
-
- // NSLog(@"didReceiveRemoteNotification and iOS<10");
- // 将收到的APNs信息传给个推统计
- [GeTuiSdk handleRemoteNotification:userInfo];
- completionHandler(UIBackgroundFetchResultNewData);
-
- [self remoteNotificationDealWithPayLoadDic:userInfo];
- }
- #pragma mark iOS > 10
- /*
- 1.对于iOS 10 及以后版本,为处理 APNs 通知点击,统计有效用户点击数,需先添加 UNUserNotificationCenterDelegate
- 2.app可以处于任何状态(terminate,前/后台)
- */
- #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
- - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
-
- // NSLog(@"willPresentNotification and iOS>10前台:%@", notification.request.content.userInfo);
-
- // 根据APP需要,判断是否要提示用户Badge、Sound、Alert(ios>10 如果需要应用在前台也展示通知)
- completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
-
- }
- // iOS 10: 统一获取推送的接口 点击通知进入App时触发,在该方法内统计有效用户点击数 (点击弹窗,不管app处于任何状态(terminate,前/后台)都会调用)
- - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
-
- // NSLog(@"didReceiveNotificationResponse iOS>10:%@", response.notification.request.content.userInfo);
-
- //理论计时提醒本地推送
- if (response.notification.request.content.userInfo[@"theoryTrainVC_classId"]) {
- [self gotoTheory];
- return;
- }
-
- //远程推送
- //将收到的APNs信息传给个推统计
- [GeTuiSdk handleRemoteNotification:response.notification.request.content.userInfo];
- completionHandler();
-
- NSDictionary* userInfo = response.notification.request.content.userInfo;
-
- [self remoteNotificationDealWithPayLoadDic:userInfo];
- }
- #endif
- #pragma mark - 个推相关方法
- /** SDK启动成功返回cid */
- - (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {
- //个推SDK已注册,返回clientId
- // NSLog(@"\n>>>[GeTuiSdk RegisterClient]:%@\n\n", clientId);
- myDelegate.token = clientId;
- upLoadToken();
-
- }
- /** SDK遇到错误回调 */
- - (void)GeTuiSdkDidOccurError:(NSError *)error {
- //个推错误报告,集成步骤发生的任何错误都在这里通知,如果集成后,无法正常收到消息,查看这里的通知。
- NSLog(@"\n>>>[GexinSdk error]:%@\n\n", [error localizedDescription]);
- }
- /** SDK收到透传消息回调 */
- - (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData andTaskId:(NSString *)taskId andMsgId:(NSString *)msgId andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId {
-
- //收到个推消息
- if (payloadData) {
- // NSString * payloadMsg = [[NSString alloc] initWithBytes:payloadData.bytes length:payloadData.length encoding:NSUTF8StringEncoding];
- // NSLog(@"GeTuiSdkDidReceivepayloadMsg:%@",payloadMsg);
-
- //判断是否被处理过[即发送离线消息的时候,会走apns+个推sdk(有效期内)]
- //ps:这里处理之后不做存档操作,保证点击通知栏的时候可以”再处理一次“
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- NSString *oldmsgId = [userDefaults objectForKey:@"remoteNotifymsgId"];
- if ([oldmsgId isEqualToString:msgId]) {
- return;
- }
-
- NSDictionary * payloadDic = [NSJSONSerialization JSONObjectWithData:payloadData options:NSJSONReadingMutableContainers error:nil];
- if (payloadDic.count == 0) {
- return;
- }
-
- pushType = [NSString stringWithFormat:@"%@",payloadDic[@"code"]];
- pushID = [NSString stringWithFormat:@"%@",payloadDic[@"id"]];
- if ([pushType integerValue] != 0) {
-
- UIAlertController *alertFind = [UIAlertController alertControllerWithTitle:payloadDic[@"title"] message:payloadDic[@"body"] preferredStyle:UIAlertControllerStyleAlert];
-
- [alertFind addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-
- }]];
- [alertFind addAction:[UIAlertAction actionWithTitle:@"前往" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
-
- [self gotoPush];
- }]];
- [self.window.rootViewController presentViewController:alertFind animated:true completion:nil];
-
- }else{
- //其它信息
- [self showMsgByArertWithTitle:payloadDic[@"title"] message:payloadDic[@"body"]];
- }
-
- }
- }
- #pragma mark 远程通知的数据处理
- -(void)remoteNotificationDealWithPayLoadDic:(NSDictionary *)userInfo{
-
- /*
- {
- "_ge_" = 1;
- "_gmid_" = "OSL-0818_bJ6zVRy8cC6JsflZOYPXO9:965f14a1051748c4a48f9db2437362e5:d48422d462d2bcf0b9d962f150b235b9";
- "_gurl_" = "sdk.open.extension.getui.com:8123";
- aps = {
- alert = {
- body = "\U60a8\U9a7e\U6821\U6709\U8f66\U8f86\U7ec8\U7aef\U62a5\U8b66\U9700\U89e3\U9664\Uff0c\U8bf7\U67e5\U770b\U5e76\U5904\U7406";
- title = "\U544a\U8b66\U6d88\U606f";
- };
- badge = 2;
- category = "button\U663e\U793a";
- "content-available" = 1;
- "mutable-content" = 1;
- sound = default;
- };
- payload = "{\"title\":\"\U544a\U8b66\U6d88\U606f\",\"code\":\"1\",\"body\":\"\U60a8\U9a7e\U6821\U6709\U8f66\U8f86\U7ec8\U7aef\U62a5\U8b66\U9700\U89e3\U9664\Uff0c\U8bf7\U67e5\U770b\U5e76\U5904\U7406\,\"id\":\"2\"}";
- }
- */
-
-
- // _gmid_对应-- taskId msgId clientID
- //这里使用msgid判断是否被处理【不过似乎应该用taskid?@lee,幻想着一个任务多条消息]
- NSString *msgId = [userInfo[@"_gmid_"] componentsSeparatedByString:@":"][1];
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- NSString *oldMsgId = [userDefaults objectForKey:@"remoteNotifymsgId"];
-
- if ([msgId isEqualToString:oldMsgId]) {
- return;
- }
-
- //开始处理
- [userDefaults setObject:msgId forKey:@"remoteNotifymsgId"];
- [userDefaults synchronize];
-
- NSString *jsonStr = userInfo[@"payload"];
- if ([jsonStr length] == 0) {
- return;
- }
-
- NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
- if (data) {
- NSDictionary * payloadDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
- pushType = [NSString stringWithFormat:@"%@",payloadDic[@"code"]];
- pushID = [NSString stringWithFormat:@"%@",payloadDic[@"id"]];
-
- if (pushType != 0) {
- [self gotoPush];
- }else{
- //其它信息
- [self showMsgByArertWithTitle:payloadDic[@"title"] message:payloadDic[@"body"]];
- }
- }
- }
- -(void)showMsgByArertWithTitle:(NSString *)title message:(NSString *)message{
-
- if (message.length == 0) {
- return;
- }
-
- //其它信息
- UIAlertController *alertFind = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
-
- [alertFind addAction:[UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-
- }]];
- [self.window.rootViewController presentViewController:alertFind animated:true completion:nil];
- }
- #pragma mark 跳转相关
- -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
- {
- if (alertView.tag == 10000) {
-
- if (buttonIndex == 1) {
- NSURL *url = [NSURL URLWithString:@"itms-apps://itunes.apple.com/cn/app/liao-ning-jia-pei-jiao-lian-ban/id1225444971?l=en&mt=8"];
- [[UIApplication sharedApplication]openURL:url];
- }
- }else{
-
- if (buttonIndex != alertView.cancelButtonIndex) {
- [self gotoPush];
- }
- }
- }
- -(void)gotoTheory{
-
- TheoryTrainVC * vc = [[TheoryTrainVC alloc]init];
- vc.isNotification = YES;
- MyUINavigationController *nav = [[MyUINavigationController alloc]initWithRootViewController:vc];
- [myDelegate.window setRootViewController:nav];
- }
- -(void)gotoPush
- {
- [self goToMessage];
- }
- -(void)goToMessage
- {
- MyMsgVC* vc = [[MyMsgVC alloc] init];
- vc.isNotification = YES;
- MyUINavigationController *nav = [[MyUINavigationController alloc]initWithRootViewController:vc];
- [myDelegate.window setRootViewController:nav];
- }
- #pragma mark -
- //程序挂起
- - (void)applicationWillResignActive:(UIApplication *)application {
-
- }
- //程序进入后台
- - (void)applicationDidEnterBackground:(UIApplication *)application {
- myDelegate.isBackgroundTask = YES;
- }
- //程序到前台
- - (void)applicationWillEnterForeground:(UIApplication *)application {
-
- //[ADView showADView];
- }
- //程序复原
- - (void)applicationDidBecomeActive:(UIApplication *)application
- {
- [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//本地
- myDelegate.isBackgroundTask = NO;
- [GeTuiSdk resetBadge];//同步给个推
- }
- - (void)applicationWillTerminate:(UIApplication *)application {
- }
- #pragma mark 检查新旧
- -(void)onCheckVersion
- {
- if (![Util connectedToNetWork])
- {
- return;
- }
-
- NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
- NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];
-
- NSString *URL = @"http://itunes.apple.com/lookup?id=1225444971";
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
- [request setURL:[NSURL URLWithString:URL]];
- [request setHTTPMethod:@"POST"];
-
- NSOperationQueue *queue=[NSOperationQueue mainQueue];
- [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
-
- if (!data) {
- return;
- }
- //如果data等于nil的时候 再去解析 会发生崩溃
- NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
-
- if (!dic) {
- return;
- }
- NSArray *infoArray = [dic objectForKey:@"results"];
- if ([infoArray count]) {
- NSDictionary *releaseInfo = [infoArray objectAtIndex:0];
- NSString *lastVersion = [releaseInfo objectForKey:@"version"];
-
- NSArray *last = [lastVersion componentsSeparatedByString:@"."];
- NSArray *current = [currentVersion componentsSeparatedByString:@"."];
- NSComparisonResult result = [last[0] compare:current[0]];
- if (result == NSOrderedDescending) {
-
- [self updateVersion];
- }else if(result == NSOrderedSame){
-
- result = [last[1] compare:current[1]];
- if (result == NSOrderedDescending) {
-
- [self updateVersion];
- }else if(result == NSOrderedSame){
-
- result = [last[2] compare:current[2]];
- if (result == NSOrderedDescending) {
- [self updateVersion];
- }
- }
- }
- }
- }];
- }
- -(void)updateVersion
- {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"更新提示" message:@"有新的版本发布,是否前往更新?" delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:@"更新", nil];
- alert.tag = 10000;
- [alert show];
- }
- #pragma mark - 欢迎页面
- -(void)makeLaunchView
- {
- NSArray* images = @[@"welcom_page_21.jpg",@"welcom_page_22.jpg",@"welcom_page_23.jpg"];
- //关于导航页要修改 添上新的导航页
- scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kSize.width, kSize.height)];
- /**跳到第4页,也会欢迎结束。
- */
- [scroll setContentSize:CGSizeMake(kSize.width* images.count+10, 0)];
- [scroll setBackgroundColor:[UIColor orangeColor]];
- [scroll setShowsHorizontalScrollIndicator:NO];
- [scroll setDelegate:self];
- scroll.pagingEnabled = YES;
- scroll.bounces = NO;
-
- UIViewController* vc = [UIViewController new];
- [vc.view addSubview:scroll];
- [self.window setRootViewController:vc];
-
- UIImageView* iv;
- for (int i =0; i<images.count; i++) {
- iv = [[UIImageView alloc] initWithFrame:kFrame];
- iv.x = kSize.width*i;
- [scroll addSubview:iv];
- [iv setImage:[UIImage imageNamed:images[i]]];
-
- UIButton* btn = [[UIButton alloc] initWithFrame:CGRectMake(kSize.width-70+kSize.width*i, kStatusHeight, 50, 28)];
- btn.backgroundColor = [UIColor darkGrayColor];
- [btn setTitle:[NSString stringWithFormat:@"%d / %ld",i+1,images.count] forState:UIControlStateNormal];
- [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
- if (i==images.count-1) {
- btn.tag = 100;
- }
- [scroll addSubview:btn];
- [btn addTarget:self action:@selector(nextClick:) forControlEvents:UIControlEventTouchUpInside];
- }
-
- UIButton* btn = [[UIButton alloc] initWithFrame:iv.frame];
- [scroll addSubview:btn];
- [btn addTarget:self action:@selector(gotoLoad) forControlEvents:UIControlEventTouchUpInside];
- }
- -(void)nextClick:(UIButton *)btn{
- if (btn.tag == 100) {
- [self gotoLoad];
- return;
- }
- CGPoint off = scroll.contentOffset;
- [scroll setContentOffset:CGPointMake(off.x+kSize.width, off.y) animated:YES];
- }
- -(void)gotoLoad
- {
- ViewController *vc = [ViewController new];
- MyUINavigationController *nav = [[MyUINavigationController alloc] initWithRootViewController:vc];
- nav.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
- self.window.rootViewController = nav;
- }
- -(void)scrollViewDidScroll:(UIScrollView *)scrollView
- {
- CGPoint off = scrollView.contentOffset;
- if (off.x / kSize.width > 2.0) {
- [self gotoLoad];
- }
- }
- @end
|