我希望创建一个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的一台设备上.
谢谢
我已经开始学习iOS开发了.
我想enum在我的示例项目中使用.
我已经声明enum中sample.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)
怎么做?,这必须用于整个项目和
如何创建枚举作为类变量而不是实例变量?
注意: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)
截图:
我知道我可以像这样对CNContacts进行排序:
let fetch = CNContactFetchRequest(...)
fetch.sortOrder = .UserDefault
Run Code Online (Sandbox Code Playgroud)
现在的问题是:我怎么觉得什么是该排序顺序?除了一些hacky启发式检查从fetch枚举返回的内容.
有一个旧的ABPersonGetSortOrdering()调用可能会保持一段时间,但肯定有一个CNContact方法来做到这一点.
我需要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) 我最近尝试使用 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) 我正在运行项目,它真的很大,它包含近1000个文件和4个自定义(自己构建)框架,还有近10个其他通过Pod添加.我已经完成了将Objective-C代码迁移到Swift以及使用Swiftify进行迁移.
我开始逐个转换每个文件,正如Apple建议的那样,但第一个转换不是由Swiftify成功完成的,也是依赖问题.
所以在这个位置看起来我开始在撒哈拉沙漠散步,在那里我看不到任何终点.
所以我需要一些建议如何转换为Swift这个大规模的项目?
我正在尝试使用一个在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并手动将触摸事件委托给适当的节点,但这会导致很多奇怪的行为.
任何帮助将非常感激.谢谢!
ios ×6
swift ×6
objective-c ×4
cncontact ×1
enums ×1
facebook ×1
iphone ×1
sorting ×1
sprite-kit ×1
swiftify ×1
touch ×1
uidatepicker ×1
uikit ×1
uitableview ×1
xcode ×1