在键盘iOS10中允许完全访问检查

最近iOS有iOS 10的更新&开发人员有一些变化,其中一个变化是现在我们不能检查允许完全访问我们以前做过的方式在下面

-(BOOL)isOpenAccessGranted{ return [UIPasteboard generalPasteboard]; } 

我search了最新的开发者指南UIPasteboard ,但无法解决它。 有没有人有这个适当的解决scheme。

对于朋友来说,在Objective-C中search解决scheme,就是这样

 NSOperatingSystemVersion operatingSystem= [[NSProcessInfo processInfo] operatingSystemVersion]; if (operatingSystem.majorVersion>=10) { UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = @"Hey"; if (pasteboard.hasStrings) { pasteboard.string = @""; return true; } else { pasteboard.string = @""; return false; } } else { return [UIPasteboard generalPasteboard]; } 

PS:这只是一个解决方法

iOS10解决scheme:检查所有可复制types,如果其中一个可用,则获得完全访问权限,否则不可以。

PS:新手机和iOS更新案例已修复。

– 斯威夫特2.3 –

 static func isFullAccessGranted() -> Bool { if #available(iOSApplicationExtension 10.0, *) { if UIPasteboard.generalPasteboard().hasStrings { return true } else if UIPasteboard.generalPasteboard().hasURLs { return true } else if UIPasteboard.generalPasteboard().hasColors { return true } else if UIPasteboard.generalPasteboard().hasImages { return true } else // In case the pasteboard is blank { UIPasteboard.generalPasteboard().string = "" if UIPasteboard.generalPasteboard().hasStrings { return true }else { return false } } } else { // before iOS10 if UIPasteboard.generalPasteboard().isKindOfClass( UIPasteboard) { return true }else { return false } } } 

– Swift 3.0 –

 static func isFullAccessGranted() -> Bool { if #available(iOSApplicationExtension 10.0, *) { if UIPasteboard.general.hasStrings { return true } else if UIPasteboard.general.hasURLs { return true } else if UIPasteboard.general.hasColors { return true } else if UIPasteboard.general.hasImages { return true } else // In case the pasteboard is blank { UIPasteboard.general.string = "" if UIPasteboard.general.hasStrings { return true }else { return false } } } else { // before iOS10 return UIPasteboard.general.isKind(of: UIPasteboard.self) } } 

我已经解决了这个问题。 iOS 10.0Swift 3.0

 func isOpenAccessGranted() -> Bool { if #available(iOSApplicationExtension 10.0, *) { UIPasteboard.general.string = "TEST" if UIPasteboard.general.hasStrings { // Enable string-related control... UIPasteboard.general.string = "" return true } else { UIPasteboard.general.string = "" return false } } else { // Fallback on earlier versions if UIPasteboard.general.isKind(of: UIPasteboard.self) { return true }else { return false } } } 

像这样使用: –

 if (isOpenAccessGranted()) { print("ACCESS : ON") } else{ print("ACCESS : OFF") } 

在iOS 10 Swift 3.0和iOS 9上testing

使用#available(iOS 10.0, *)而不是#available(iOSApplicationExtension 10.0, *)

 func isOpenAccessGranted() -> Bool { if #available(iOS 10.0, *) { var originalString = UIPasteboard.general.string if(!(originalString != nil)){ originalString = "" } UIPasteboard.general.string = "Test" if UIPasteboard.general.hasStrings { UIPasteboard.general.string = originalString return true }else{ return false } }else{ return UIPasteboard.general.isKind(of: UIPasteboard.self) } } 

Swift 3

 static func isOpenAccessGranted() -> Bool { if #available(iOS 10.0, iOSApplicationExtension 10.0, *) { let value = UIPasteboard.general.string UIPasteboard.general.string = "checkOpenedAccess" let hasString = UIPasteboard.general.string != nil if let _ = value, hasString { UIPasteboard.general.string = value } return hasString } else { return UIPasteboard(name: UIPasteboardName(rawValue: "checkOpenedAccess"), create: true) != nil } }