2016-09-17 30 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!最後有人指出 –

相關問題