2016-09-17 105 views
5

最近的iOS拥有10的iOS的更新&有开发商一定的变化的变化之一是现在我们不能检查允许全面进入我们以前没有下文允许在键盘完全访问检查iOS10

给出的方法
-(BOOL)isOpenAccessGranted{ 
    return [UIPasteboard generalPasteboard]; 
} 

我搜索了最新的Developer Guide for UIPasteboard,但无法解决它。有没有人有适当的解决方案。

+0

我有同样的问题。 –

回答

2

我修复了这个问题。 的iOS 10.0夫特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") 
} 
+0

难道你不认为将“TEST”字符串设置为UIPastebord一般将替换用户的先前存在的文本。这是最佳解决方案吗? – iYoung

+0

这是我用过的UIPasteboard.generalPasteboard()字符串,而不是UIPasteboard.general.hasStrings – kb920

+0

@mitul我试过这个,但它在OTT textfield中粘贴TEST,这不是正确的解决方案。 – iYoung

0

测试在iOS 10夫特3.0和iOS 9

使用#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) 
    } 
} 
+0

我们如何在swift中做到这一点? –

4

朋友,寻找在Objective-C的解决方案,这是

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:这只是一种变通方法

+0

谢谢!它可以在iOS 10上完美工作。 – Beny

+0

嗨,你能解释我已经尝试了你提到的代码吗?但它总是只给出Yes。即使我删除了我的第三方键盘。 –

0

斯威夫特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 
    } 
} 
3

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

P.S:新手机和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 
     } 
    } 
} 

- 斯威夫特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) 
    } 
} 
+0

目前为止的最佳答案 –

+0

@Paul Thanks!最后有人指出 –

相关问题