iYo*_*ung 6 keyboard uipasteboard ios custom-keyboard ios10
最近iOS有iOS 10的更新并且开发人员有一些变化,其中一个变化是现在我们无法检查允许完全访问我们之前做过的方式在下面给出
-(BOOL)isOpenAccessGranted{
return [UIPasteboard generalPasteboard];
}
Run Code Online (Sandbox Code Playgroud)
我搜索了最新的UIPasteboard开发者指南,但无法解决.有没有人有一个适当的解决方案.
iOS11及以上版本很简单.
iOS10解决方案:检查所有可复制类型,如果其中一个可用,则您具有完全访问权限,否则无法访问.
- 斯威夫特4.2--
override var hasFullAccess: Bool
{
if #available(iOS 11.0, *){
return super.hasFullAccess// super is UIInputViewController.
}
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)
}
}
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题。 iOS 10.0和Swift 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:-
if (isOpenAccessGranted())
{
print("ACCESS : ON")
}
else{
print("ACCESS : OFF")
}
Run Code Online (Sandbox Code Playgroud)