3D触摸快速动作

时间:2017-06-08 05:30:19

标签: ios objective-c xcode 3dtouch

我正在尝试使用应用程序图标上的3D触控实现快速操作,并且发生了一些非常奇怪的事情。

我正在做的图标快速操作应该是使用根视图控制器打开应用程序,隐藏一些视图,显示其他视图并检查更新。一切正常,直到我转到另一个视图控制器并回到主控制器,按下主页按钮并尝试快速操作。

如果我移动到另一个视图控制器返回到主视图,并尝试快速操作,视图将不再隐藏/取消隐藏,但检查更新方法正常工作。还调用了hide / unhide的代码,但它没有生效。

尝试使用performOnMainThread执行hide / unhide方法,尝试将其放在主线程上的调度中,但是没有任何效果。

的AppDelegate:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
    if ([shortcutItem.type isEqualToString:@"com.systems"])
    {
        self.shortcutAction = kShortcutActionSystems;
    }
}

MainViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(appBecameActive)
                                                     name:UIApplicationDidBecomeActiveNotification object:nil];
}


- (void)appBecameActive
{
    if ([appDelegate.shortcutAction isEqualToString:kShortcutActionUpdates])
    {
        if (authenticated)
        {
            [self showUpdates:nil];
            [self checkForUpdates:nil];
        }
        else
        {
            [self showUpdates:nil];
        }
    }
}

checkForUpdates:始终被调用并始终执行请求。 showUpdates:总是被调用但是如果移动到另一个视图控制器并且返回,则隐藏/取消隐藏部分不起作用。

编辑:

在showUpdates中:我调用另一种方法:

- (IBAction)showUpdates:(id)sender
{
    if (authenticated)
    {
        //[self showUpdatesAuthenticatedView];
        [self performSelectorOnMainThread:@selector(showUpdatesAuthenticatedView) withObject:nil waitUntilDone:NO];


- (void)showUpdatesAuthenticatedView
{
    _updatesTableView.dataSource = self;
    [_updatesTableView reloadData];

    _updatesIndicator.hidden = NO;
    _systemsIndicator.hidden = YES;

    _updatesTableView.hidden = NO;
    _backTableView.hidden = NO;
    _checkUpdatesOutlet.hidden = NO;

    _systemTableView.hidden = YES;
    _loginAskView.hidden = YES;
}

0 个答案:

没有答案