Повторяющееся применение метода: openURL [дубликат]

Фокус - проблема. Он будет работать, когда q нажат, потому что эта кнопка имеет фокус. Это не работает, если w нажат независимо от того, нажимаете ли вы сначала, потому что кнопка «q» имеет фокус. Вместо этого вы должны использовать KeyBindings. Они работают, несмотря на то, что компонент сосредоточен.

Другим решением было бы добавить нажатия кнопок q и w на ключевой список, добавленный в JFrame, и использовать функции requestFocus () и grabFocus ().

Но вам нужно будет добавить реализацию как для клавишника в JFrame, так и для нажатия кнопки и отпускания кнопки.

Вот идеальная ссылка, чтобы увидеть, как фокус влияет на то, как ваши нажатия клавиш работают в качелях

http://www.javaworld.com/article/2076720/core-java/focus-on-swing.html

23
задан Idles 19 June 2013 в 19:44
поделиться

7 ответов

Нам не нужно Явно нужно проверить URL-адрес, ниже код делает: -

- (BOOL)application: (UIApplication *)application openURL: (NSURL *)url sourceApplication: (NSString *)sourceApplication annotation: (id)annotation
{

    if ([GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation]) {
        return YES;
    }else if([FBAppCall handleOpenURL:url sourceApplication:sourceApplication]){
        return YES;
    }

    return NO;
}
32
ответ дан user2144179 19 August 2018 в 15:08
поделиться
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
   sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{


   if( [GPPURLHandler handleURL:url
                  sourceApplication:sourceApplication
                     annotation:annotation])
   {
       return [GPPURLHandler handleURL:url
                     sourceApplication:sourceApplication
                            annotation:annotation];
   }
    else if([[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation])
    {
        return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];
    }
    return NO;
}
-4
ответ дан Dharmesh Dhorajiya 19 August 2018 в 15:08
поделиться

Вы хотите использовать [[UIApplication sharedApplication] canOpenURL:]

-2
ответ дан Idles 19 August 2018 в 15:08
поделиться
  • 1
    нет, это неверно и не связано с моим вопросом – Peter Lapisu 19 June 2013 в 19:51
  • 2
    canOpenURL, прежде всего, позволяет вам определить, какие приложения установлены на устройстве. Вы можете проверить префикс URL, чтобы выяснить, из какой службы он пришел. URL-адреса приложения Facebook начнутся с fb: – Idles 19 June 2013 в 19:54
  • 3
    @Idles помнят, что это метод обратного вызова. Если ваше приложение поддерживает как facebook, так и URL-адреса google, canOpenUrl всегда возвращает YES для обоих. Вы правы, что можете проверить URL-адрес, но обычно библиотека имеет метод handleURL:, который возвращает логическое значение для вас. Вам не пришлось бы беспокоиться о себе, если вы не захотите делать магию самостоятельно. – MrJre 3 April 2014 в 10:02

Для пользователей Swift (идея от пользователя2144179)

Импорт ниже фреймворков

import Firebase
import GoogleSignIn
import FacebookCore // (FBSDKCore's alternative for swift)

и в ваши методы делегата

// when your target is under iOS 9.0
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    let isFBOpenUrl = SDKApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
    let isGoogleOpenUrl = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
    if isFBOpenUrl { return true }
    if isGoogleOpenUrl { return true }
    return false
}

или вы может использовать другой метод «open url:», если ваша цель равна 9.0+. SDK также содержат метод для этого.

Ссылка на Firebase: https://firebase.google.com/docs/auth/ios/google-signin

Ссылка на Facebook: https://developers.facebook.com/docs/swift/reference/classes/applicationdelegate.html

1
ответ дан Mark 19 August 2018 в 15:08
поделиться

Вы можете попробовать следующее:

if ([[url absoluteString] rangeOfString:@"<Your Google Bundle ID>"].location ==            NSNotFound)
{
    // Call FBAppCall's handleOpenURL:sourceApplication to handle Facebook app responses
    BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
    // You can add your app-specific url handling code here if needed
    return wasHandled;
}
else
{
    return [GPPURLHandler handleURL:url
                  sourceApplication:sourceApplication
                         annotation:annotation];
}
return YES;

Вызвать вышеупомянутый метод в

(BOOL)application:(UIApplication *)application
          openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
       annotation:(id)annotation 

в вашем appDelegeate.m

В основном, что это нужно проверить префикс URL, а затем вызвать метод google +, если префикс url - ur google + bundle id, а если нет, он вызовет метод fb. Надеюсь, это поможет

5
ответ дан Reinhard Männer 19 August 2018 в 15:08
поделиться
  • 1
    Вы можете поочередно проверить, что схема URL начинается с «fb», что сделает идентификатор приложения кода независящим. – jmdecombe 15 January 2015 в 22:59
  • 2
    Genius, я не мог для жизни понять, почему работает только FB OR G +, ни в одно и то же время – user1282637 12 October 2015 в 01:56

Метод «application: openURL: sourceApplication: annotation:» устарел от iOS9. поэтому теперь вы можете использовать как.

- (BOOL)application:(UIApplication *)app
        openURL:(NSURL *)url
        options:(NSDictionary *)options {
       // For Google sign in SDK
       if ([[GIDSignIn sharedInstance] handleURL:url
                               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]) {
          return YES;
       // For Facebook SDK
       }else if ( [[FBSDKApplicationDelegate sharedInstance] application:app
                                                          openURL:url
                                                sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                       annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]){
          return YES;
      //For Google plus SDK
      }else if ([GPPURLHandler handleURL:url
                       sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                              annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]){
          return YES;
      }

     return NO;
}
2
ответ дан vp2698 19 August 2018 в 15:08
поделиться
-1
ответ дан Andrey AK 31 October 2018 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: