小编Joh*_*ers的帖子

如何取消之前的Facebook重新授权电话?

关于Facebook SDK for iOS的快速问题.我正在尝试为用户实现该功能,以授予我的应用程序访问扩展权限的权限.

当用户接受扩展的权限请求(从用户被重定向到的Facebook iOS应用程序)时,代码工作正常,但我无法检测用户何时返回应用程序而未接受权限,或单击取消然后回到应用程序.

如果我点击"取消"并多任务回到应用程序,则没有任何记录,屏幕上也没有显示任何内容.当我再次尝试重新授权时,Facebook SDK会抛出异常:

FBSession:在先前的重新授权呼叫尚未完成时重新授权无效.

虽然我可以捕获异常,但它仍然没有帮助,因为我无法弄清楚如何停止前一个调用,以便允许用户再次尝试重新授权.

这是我目前正在使用的代码:

@try {
    [[FBSession activeSession] reauthorizeWithPermissions:[self requiredPermissions]
                                             behavior:FBSessionLoginBehaviorWithFallbackToWebView
                                    completionHandler:^(FBSession *session, NSError *error) {
        if (!error) {
            [self fetchUserPermissionsWithCompletionHandler:^(BOOL extendedGranted) {
                if (extendedGranted) {
                    [self setCanPostToActivityStream:YES];
                }
            }];
        }
        else {
            NSLog(@"%@", [error localizedDescription]);
        }
    }];
}
@catch (NSException *exception) {
    NSLog(@"%@", exception);
}
Run Code Online (Sandbox Code Playgroud)

现在,问题不在于上面的代码 - 代码工作正常.我再次遇到的问题是,当用户在允许权限后没有成功返回应用程序时,取消之前的重新授权调用.Facebook SDK似乎并没有以任何方式提醒应用程序这种情况.

facebook objective-c ios

12
推荐指数
1
解决办法
4945
查看次数

有效的JSON,但来自AFNetworking/NSJSONSerialization的'Cocoa error 3840'

我一直在乱砍几个小时试图解决这个问题无济于事 - 似乎我唯一的选择是在这里发帖,看看是否有人可以对这个问题有所了解.它可能是AFNetworking的问题,或者(更有可能),它可能是我的代码的问题.

我正在使用的代码完全适用于我的应用程序中99%的操作.我正在开发一个通过构建JSON搜索,发送它们并从服务器接收响应来利用Elastic Search的应用程序.

以下是返回的JSON示例:

{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": null,
        "hits": [
            {
                "_index": "asx",
                "_type": "61a88d3848b00655d9aa59db70847318",
                "_id": "b91f9257744fedb4ef1c127e275c127c",
                "_score": null,
                "_source": {
                    "value": "22/06/1998"
                },
                "sort": [
                    4.439049394553e-312
                ]
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,将其插入jsonlint.com(并了解一些关于JSON格式),很容易看出这是有效的JSON.

我正在使用AFHTTPClient子类来发布请求并接收数据.这是我用来POST的代码:

[super postPath:path parameters:parameters success:^(AFHTTPRequestOperation *operation, NSDictionary *response) {
    NSData *responseData = [(AFJSONRequestOperation *)operation responseData];
    NSDictionary *responseDictionary;

    if (responseData != nil) {
        responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:NULL];
    } …
Run Code Online (Sandbox Code Playgroud)

cocoa json objective-c afnetworking nsjsonserialization

6
推荐指数
1
解决办法
4877
查看次数

使用自定义 UIViewController 动画制作动画后呈现的视图控制器消失

我已经环顾四周寻找答案,并在过去的两个小时里把我的头发拉到了尽头。

我正在实现一个非常基本的自定义视图控制器过渡动画,它只是放大呈现的视图控制器并在呈现的视图控制器中增长。它添加了淡入淡出效果(0 到 1 alpha,反之亦然)。

它在呈现视图控制器时工作正常,但是在关闭时,它会将presenting视图控制器带回所有方式以填充屏幕,但随后它莫名其妙地消失了。在这些动画之后我没有做任何改变 alpha 或隐藏值的事情,这几乎是一个全新的项目。我已经开发 iOS 应用程序 3 年了,所以我怀疑这可能是一个错误,除非有人能找出我哪里出错了。

class FadeAndGrowAnimationController : NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {
func animationControllerForPresentedController(presented: UIViewController!, presentingController presenting: UIViewController!, sourceController source: UIViewController!) -> UIViewControllerAnimatedTransitioning! {
    return self
}

func animationControllerForDismissedController(dismissed: UIViewController!) -> UIViewControllerAnimatedTransitioning! {
    return self
}

func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval {
    return 2
}

func animateTransition(transitionContext: UIViewControllerContextTransitioning!) {
    let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as UIViewController
    let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as UIViewController

    toViewController.view.transform = CGAffineTransformMakeScale(0.5, 0.5)
    toViewController.view.alpha = 0

    transitionContext.containerView().addSubview(fromViewController.view)
    transitionContext.containerView().addSubview(toViewController.view)
    transitionContext.containerView().bringSubviewToFront(toViewController.view) …
Run Code Online (Sandbox Code Playgroud)

animation ipad ios swift

5
推荐指数
1
解决办法
5528
查看次数