小编Md.*_*san的帖子

不能从[UIActivityViewController excludedActivityTypes]中排除UIActivityTypePostToFacebook

我希望创建一个UIActivityViewController将排除一些本地共享功能,包括Facebook和Twitter共享.但Facebook的份额仍然可用ShareExtention.

我创建了以下内容:

activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems  applicationActivities:applicationActivities];
Run Code Online (Sandbox Code Playgroud)

并通过设置排除的活动类型排除Facebook.

activityViewController.excludedActivityTypes = @[
                                                 UIActivityTypeAddToReadingList,
                                                 UIActivityTypeAssignToContact,
                                                 UIActivityTypePrint,
                                                 UIActivityTypeSaveToCameraRoll,
                                                 UIActivityTypeCopyToPasteboard,
                                                 UIActivityTypeAirDrop,
                                                 UIActivityTypePostToFacebook,
                                                 UIActivityTypePostToTwitter
                                                 ];
Run Code Online (Sandbox Code Playgroud)

在我的iPhone上运行时,尽管排除了Facebook图标,但仍会显示.

调查这是如何发生的我发现活动控制器的完成处理程序正在返回activityType = com.facebook.Facebook.ShareExtension,而不是UIActivityTypePostToFacebook.此外,当在活动控制器中选择更多按钮时,Facebook的切换与使用共享约定的其他应用程序一样.

为什么Facebook使用的shareExtention时间不是Twitter,为什么我不能使用排除的活动将其排除?

注意:我已经在多个设备上对此进行了测试,但该问题仅存在于运行8.1.3的一台设备上.

谢谢

facebook objective-c uikit ios uiactivityviewcontroller

30
推荐指数
2
解决办法
5344
查看次数

在iOS中创建和使用Enum的位置?

我已经开始学习iOS开发了.

我想enum在我的示例项目中使用.

我已经声明enumsample.h像下面.我希望我已经正确宣布了这一点.

typedef enum{s=1,m,t,w,th,f,sa} days;
Run Code Online (Sandbox Code Playgroud)

我想用这个viewController.m.在viewController.h,我已经导入sample.h.

我想使用名称之类的枚举"days.sa".但是我在谷歌搜索的代码越多,他们就像在"sample.h"类似的地方创建一个实例变量

@interface Sample:NSObject
{
    days d;
}
Run Code Online (Sandbox Code Playgroud)

如果我想使用这种方法,我需要创建和使用实例.但我不想那样.

我需要使用像

days.d or days.sa or days.th
Run Code Online (Sandbox Code Playgroud)

怎么做?,这必须用于整个项目和

如何创建枚举作为类变量而不是实例变量?

enums objective-c ios

27
推荐指数
3
解决办法
4万
查看次数

UIDatePicker与伊斯兰历法的奇怪行为

注意:Bug报告给Apple

雷达编号:29265429(链接)

我正在使用UIDatePicker.当我给格里高利历时它工作得很好.日期从1到31

然而,当我给它伊斯兰教islamicUmmAlQura它给我一个奇怪的行为.日期从1到30开始,但是有一个高于1且低于30的'2',这样的日子如下:2,1,2,3,4 ... 30

我创建了一个新的空iOS项目,并将以下代码放入viewDidLoad方法中:

let picker = UIDatePicker(frame: CGRect(x: 0, y: 30, width: 0, height: 0))

picker.datePickerMode = .date
picker.date = Date()
picker.calendar = Calendar(identifier: .islamicUmmAlQura)
picker.autoresizingMask = UIViewAutoresizing.flexibleRightMargin
picker.frame.size.width = 300
view.addSubview(picker)
Run Code Online (Sandbox Code Playgroud)

截图:

在此输入图像描述

uidatepicker ios swift

27
推荐指数
1
解决办法
987
查看次数

如何使用CNContact API获取用户排序顺序

我知道我可以像这样对CNContacts进行排序:

let fetch = CNContactFetchRequest(...)
fetch.sortOrder = .UserDefault
Run Code Online (Sandbox Code Playgroud)

现在的问题是:我怎么觉得什么该排序顺序?除了一些hacky启发式检查从fetch枚举返回的内容.

有一个旧的ABPersonGetSortOrdering()调用可能会保持一段时间,但肯定有一个CNContact方法来做到这一点.

sorting ios swift cncontact

8
推荐指数
2
解决办法
1587
查看次数

根据单元格增加TableView高度

我需要UITableView根据UITableViewCell内容大小增加高度.我正在使用自定义Google自动完成功能.我有一个UITextField.当我输入一个字母时,UITextField它将调用shouldChangeCharactersIn范围委托方法.

在该方法中,我将向Google AutoComplete API发送动态请求以获取预测结果.

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    if tableView.numberOfRows(inSection: 0) > 0
    {

    let newLength = (textField.text?.characters.count)! + string.characters.count - range.length
    let enteredString = (textField.text! as NSString).replacingCharacters(in: range, with:string)

    if newLength == 0 {
        tableView.isHidden = true
    }

    if newLength > 0
    {
        address.removeAll()
        self.tableView.isHidden = false

        GetMethod("https://maps.googleapis.com/maps/api/place/autocomplete/json?input=\(enteredString)&key=MYAPIKEY", completion: { (resultDict) in

            let resultArray = resultDict.object(forKey: "predictions")! as! NSArray

            print(resultArray.count) …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview ios swift

7
推荐指数
2
解决办法
8542
查看次数

iOS 13 上的应用程序启动时黑屏

我最近尝试使用 Swiftify 将 Objective-C 项目转换为 Swift。该项目已成功转换,并且没有错误/警告,但在运行该项目时,应用程序显示黑屏。

控制台中的错误是:

Info.plist configuration "Default Configuration" for UIWindowSceneSessionRoleApplication contained UISceneDelegateClassName key, but could not load class with name "SceneDelegate".
Run Code Online (Sandbox Code Playgroud)

There is no scene delegate set. A scene delegate class must be specified to use the main storyboard file.
Run Code Online (Sandbox Code Playgroud)

但从我的项目层次结构可以看出,存在一个 SceneDelegate 类。 项目层次结构

另外我的Info.plist文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>$(DEVELOPMENT_LANGUAGE)</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UIApplicationSceneManifest</key> …
Run Code Online (Sandbox Code Playgroud)

objective-c swift swiftify

7
推荐指数
1
解决办法
3239
查看次数

如何将Giant project Objective C转换为Swift

我正在运行项目,它真的很大,它包含近1000个文件和4个自定义(自己构建)框架,还有近10个其他通过Pod添加.我已经完成了将Objective-C代码迁移到Swift以及使用Swiftify进行迁移.

我开始逐个转换每个文件,正如Apple建议的那样,但第一个转换不是由Swiftify成功完成的,也是依赖问题.

所以在这个位置看起来我开始在撒哈拉沙漠散步,在那里我看不到任何终点.

所以我需要一些建议如何转换为Swift这个大规模的项目?

xcode code-migration objective-c swift

5
推荐指数
2
解决办法
1669
查看次数

当isUserInteractionEnabled为false时,SKSpriteNode不允许触摸通过

我正在尝试使用一个在SpriteKit中创建一个叠加层SKSpriteNode.但是,我希望触摸通过叠加层,所以我设置isUserInteractionEnabled为false.但是,当我这样做时,SKSpriteNode仍然似乎吸收了所有的触摸,并且不允许底层节点做任何事情.

这是我正在谈论的一个例子:

class 

TouchableSprite: SKShapeNode {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        print("Touch began")
    }
}

class GameScene: SKScene {
    override func sceneDidLoad() {
        // Creat touchable
        let touchable = TouchableSprite(circleOfRadius: 100)
        touchable.zPosition = -1
        touchable.fillColor = SKColor.red
        touchable.isUserInteractionEnabled = true
        addChild(touchable)


        // Create overlay
        let overlayNode = SKSpriteNode(imageNamed: "Fade")
        overlayNode.zPosition = 1
        overlayNode.isUserInteractionEnabled = false
        addChild(overlayNode)
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了子类化SKSpriteNode并手动将触摸事件委托给适当的节点,但这会导致很多奇怪的行为.

任何帮助将非常感激.谢谢!

touch ios sprite-kit swift

2
推荐指数
1
解决办法
1294
查看次数