小编C6S*_*ver的帖子

用于Facebook的UIActivityViewController不显示默认文本

我正在使用UIActivityViewController,它提供了一些默认文本和链接.使用所有社交媒体(短信,电子邮件,推特),将显示默认文本和URL.但是,在显示URL图像时使用FB,默认文本不显示(它只是空白).以下是代码:

    NSString *shareStr = [NSString stringWithFormat:@""some text"];
    NSURL *website = [NSURL URLWithString:@"website"];
    NSArray *shareAray = @[shareStr,website];

    [self viewWillDisappear:YES];

    UIActivityViewController *activityController = [[UIActivityViewController alloc]initWithActivityItems:shareAray
                                                                                    applicationActivities:nil];

    if([activityController respondsToSelector:@selector(popoverPresentationController)] )
        activityController.popoverPresentationController.barButtonItem = self.shareButton;


    [self presentViewController:activityController
                       animated:YES completion:nil];

    [activityController setCompletionHandler:^(NSString *activityType, BOOL completed){
        if (!activityType || UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        {
            [self viewWillAppear:YES];
        }
    }];
Run Code Online (Sandbox Code Playgroud)

更新:如下面其他人所述,FB不再允许预填.以下是视频的另一个链接,其中提供了允许内容和不允许内容的示例:https: //developers.facebook.com/docs/apps/review/prefill

xcode facebook objective-c uiactivityviewcontroller

43
推荐指数
2
解决办法
2万
查看次数

Firebase允许来自相同电子邮件地址的多个帐户

在Firebase控制台中,我专门将其设置为仅允许"每个电子邮件地址一个帐户".这可以在"高级"下的登录方法选项卡中找到.

我有一个使用Google登录方法创建的帐户,其地址类似于"me@gmail.com".如果我然后选择使用也使用"me@gmail.com"的帐户通过Facebook登录,Firebase允许它,但Users实体中的电子邮件地址为空.

Firebase文档说明:

如果您不允许多个帐户使用相同的电子邮件地址,则如果已经有使用该电子邮件地址登录的帐户,则用户无法使用电子邮件地址ex@gmail.com创建使用Google帐户登录的新帐户ex@gmail.com和密码.

如果您尝试使用用户名/密码直接创建Firebase登录,而不是从Facebook和Google等两家提供商创建帐户,这是否只会计算在内?我的印象是,如果它找到重复的电子邮件地址,它应该拒绝注册/登录.我确实意识到引用声明"和密码"让我感到惊讶.

firebase firebase-authentication

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

钥匙串数据不存储在iCloud中

我正在使用钥匙串在本地设备上存储数据,但已决定通过iCloud使其适用于多个设备.我已启用iCloud权利并在成员中心内创建了必要的配置.但是,在存储数据时,它似乎并未存储在云中.我在模拟器和我的iPhone设备之间进行测试.模拟器使用我的帐户登录.每个设备继续保存数据,但另一个设备看不到结果.

我只将kSecAttrSynchronizable和kCFBooleanTrue添加到现有设置中,我理解这是使密钥链使用云所需的全部内容.

这里是用于存储和调用钥匙串数据的代码.

+ (NSMutableDictionary *)getKeychainQuery:(NSString *)service
{
    return [NSMutableDictionary dictionaryWithObjectsAndKeys:
            (__bridge id)kSecClassGenericPassword,(__bridge id)kSecClass,
            service, (__bridge id)kSecAttrService,
            service, (__bridge id)kSecAttrAccount,
            (__bridge id)kCFBooleanTrue, (__bridge id)kSecAttrSynchronizable,
            (__bridge id)kSecAttrAccessibleAfterFirstUnlock,(__bridge id)kSecAttrAccessible,
            nil];
}

+ (void)save:(NSString *)service data:(id)data
{
    NSMutableDictionary *keychainQuery = [self getKeychainQuery:service];
    CFTypeRef result = NULL;
    SecItemDelete((__bridge CFDictionaryRef)keychainQuery);
    [keychainQuery setObject:[NSKeyedArchiver archivedDataWithRootObject:data] forKey:(__bridge id)kSecValueData];
    OSStatus status = SecItemAdd((__bridge CFDictionaryRef)keychainQuery, &result);

    if (status == errSecSuccess) NSLog(@"Succcessfully Stored Value");
    else NSLog(@"Failed to store value with code: %ld",(long)status);
}

+ (id)load:(NSString *)service {
    id ret = nil; …
Run Code Online (Sandbox Code Playgroud)

objective-c keychain ios icloud

10
推荐指数
1
解决办法
2852
查看次数

Notes的UIActivityType是什么?

我试图从我的UIActivityType中排除所有服务,除了电子邮件和短信.我使用以下声明:

activityController.excludedActivityTypes = @[UIActivityTypeAddToReadingList,UIActivityTypeAirDrop,UIActivityTypeAssignToContact,UIActivityTypeCopyToPasteboard,
                                                     UIActivityTypePostToFacebook,UIActivityTypePostToFlickr,UIActivityTypePostToTencentWeibo,UIActivityTypePostToTwitter,
                                                     UIActivityTypePostToVimeo,UIActivityTypePostToWeibo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll];
Run Code Online (Sandbox Code Playgroud)

在iOS 9下,我注意到还有一些名为"Notes"的东西也出现了.我查看了Apple文档以及自动完成功能,但找不到引用Notes的条目.我该如何排除它?

uiactivityviewcontroller ios9

10
推荐指数
0
解决办法
1727
查看次数

shouldChangeCharactersIn 结合建议文本

我有一个UITextField并且正在使用委托方法func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

此处的字段可以显示建议的文本(例如名称)。问题是在采纳建议与用户输入单个字母时出现的。如果采纳了建议(例如 Tom),则委托方法会触发但string只包含一个空格“”。这会导致验证失败,因为假设用户在现实中选择了一个完整的单词时正在空白处打字。

我们如何使用shouldChangeCharactersIn检查文本输入但仍允许使用建议文本?

uitextfield ios swift

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

场景前 SKView 闪烁灰色

我有一个 UIView 类型的主视图。该视图有两个仅横向的 skview(左和右)。所有视图和场景均设置为黑色背景。

我从隐藏的两个 skview 开始。主屏幕在屏幕两侧显示问题。如果答案不正确,我将场景设置为效果,然后启用该效果并取消隐藏 skview(左或右)。该效果会显示几秒钟,然后我对[self.leftView presentScene:nil];rightView 执行相同的操作来禁用它。然后我再次隐藏视图。

问题在于,当显示场景时,在使用黑色背景适当渲染场景之前,会出现短暂的白色视图闪烁。事实上,这就是为什么我一开始就隐藏skviews,就好像我不这样做一样,尽管我将其设置为黑色,它们仍会以较浅的背景显示。

如何在不使用较浅背景颜色的情况下显示这些场景?

一些有代表性的代码:

self.fireSceneLeft = [FireScene sceneWithSize:self.leftView.bounds.size];
self.fireSceneLeft.scaleMode = SKSceneScaleModeAspectFill;
self.fireSceneLeft.backgroundColor = [UIColor blackColor];

[self.leftView presentScene:self.fireSceneLeft];
    [self.leftView setHidden:NO];
Run Code Online (Sandbox Code Playgroud)

至于场景效果本身:

    @implementation FireScene

-(SKEmitterNode *)fireEffect
{
    SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"FireEffect" ofType:@"sks"]];
    emitter.position = CGPointMake(150,80);
    emitter.name = @"fire";
    emitter.targetNode = self.scene;
    emitter.numParticlesToEmit = 2;
    return emitter;
}

-(void)update:(CFTimeInterval)currentTime {

    [self addChild:[self fireEffect]];
}

@end
Run Code Online (Sandbox Code Playgroud)

ios sprite-kit skview skscene

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

didRotateFromInterfaceOrientation在旋转时触发两次

我意识到didRotateFromInterfaceOrientation在iOS 8中已弃用; 但是,我有一个需要与iOS7保持兼容的应用程序.我遇到的问题是,当设备旋转时(在这种情况下为iPad),此方法被调用两次.这发生在实际设备以及模拟器上.我只是在方法中放了一个NSLog来显示它.

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{

        NSLog(@"didRotateCalled");
}
Run Code Online (Sandbox Code Playgroud)

我也检查了willRotateToInterfaceOrientation但是一个正常工作只被调用一次.

有什么想法为什么didRotateFromInterfaceOrientation每次旋转方法会被触发两次?

作为快速更新.我提出了一个断点,揭示了一些有趣的东西.这个视图是一个UISplitviewcontroller看起来像该方法首先被调用UISplitviewcontroller,然后作为一个UIViewController.不知道为什么......

一些额外的信息.我正在使用Storyboard一个用于iPhone和另一个iPad.iPhone不使用splitViewController.代码库是共享的,因此在prepareForSegue我执行以下操作:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
            UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
            splitViewController.delegate = segue.destinationViewController;
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios

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

在 Firebase 中的 AutoID 下查询

Results
- auto generated ID
  - auto generated ID
       value1: abc
       value2: def
Run Code Online (Sandbox Code Playgroud)

我希望能够查询“value2”在哪里等于某个特定值。我从一个参考开始:

let ref = FIRDatabase.database().reference().child("Results")
Run Code Online (Sandbox Code Playgroud)

由于我不知道自动生成的 ID 以便提供路径,我是否需要先获取它们才能确定可以使用的值.queryEqualToValue?如果是这样,我是不是只是抓取每条记录来查找一个值,而不是使用某种索引来只抓取那些value2等于某个值的记录?

最后,我想要一个查询,返回所有value2等于某个值的“记录” 。感觉就像我需要遍历每条记录才能做到这一点。我觉得我在这里错过了一些东西。

更新:

我试过了:

self.ref.queryOrderedByKey().queryEqual(toValue: "def", childKey: "value2").observeSingleEvent(of: .value, with: {(snapshot) in
            print(snapshot) })
Run Code Online (Sandbox Code Playgroud)

这会因我在下面的评论中给出的错误而崩溃。

我试过了:

self.ref.queryOrdered(byChild: "value2").queryEqual(toValue: "def").observeSingleEvent(of: .childAdded, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)

这永远不会执行闭包。如果我将观察者更改为".value"它返回 null。

如果我这样做:

self.ref.queryOrdered(byChild: "value2").observeSingleEvent(of: .childAdded, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)

它实际上会对数据进行正确排序。".value"不管怎样,它都不会正确排序,添加queryEqualthen 不起作用,如上所述。

firebase swift firebase-realtime-database

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

在Objective C Header中访问Swift类

我一直在混合使用Swift和Objective C,但是我遇到了从Objective C的HEADER文件访问Swift类的问题.我可以在.m文件中成功完成.

在.h文件中,我导入了Xcode生成的文件,其格式为"Appname-Swift.h".但是,这样做我得到的信息是找不到该文件.我可以在我的.m文件中执行相同的导入,没有任何问题.但是,我在.h文件中需要它,因为我引用了一个我需要使用公共API访问的Swift类.

如何从Objective C的.h部分使用Swift类?

例:

#import <UIKit/UIKit.h>
#import "MyApp-Swift.h"

@interface SelectedContactsVC : UIViewController

@property (nonatomic,strong) MapVC *mapVC;

@end
Run Code Online (Sandbox Code Playgroud)

上面的MapVC是一个Swift类.

xcode objective-c swift

4
推荐指数
1
解决办法
1370
查看次数

结合了 Watch OS 和 iOS 框架

我创建了一个在 iOS 和 Watch OS 之间共享的类。这很好用。但是,我想将该类变成一个框架。这样做虽然只允许将其创建为 iOS 或 Watch OS 框架,但不能同时创建两者。为 Watch OS 创建它可以防止 iOS 看到它,反之亦然。

如何拥有一个 iOS 和 Watch OS 都可以使用的单一框架?

xcode swift

4
推荐指数
1
解决办法
1889
查看次数