2015-01-16 3 views
1

Я использую подкласс PFLogInViewController, в котором я хочу отображать ошибки по-другому, чем поведение по умолчанию, которое должно вызывать UIAlertView.Избегайте отображения UIAlertView при использовании PFLogInViewController

Кто-нибудь знает, есть ли способ избежать отображения UIAlertView? Я уже использую следующий метод, однако на самом деле это не позволяет мне избежать отображения UIAlertView в случае неудачного входа.

- (BOOL)logInViewController:(PFLogInViewController *)logInController shouldBeginLogInWithUsername:(NSString *)username password:(NSString *)password 

ответ

0

PFLogInViewController не предоставляет крючки, чтобы изменить это поведение. Возможно, вы захотите создать свой собственный подклассу PFLogInViewController и переопределить метод, отображающий представление предупреждения при неудачном входе в систему.

Поскольку код PFLogInViewController has been open sourced, в соответствии с ним метод, отображающий вид предупреждения, равен _loginDidFailWithError.

https://github.com/ParsePlatform/ParseUI-iOS/blob/master/ParseUI/Classes/LogInViewController/PFLogInViewController.m#L382-L390

- (void)_loginDidFailWithError:(NSError *)error { 
    if (_delegateExistingMethods.didFailToLogIn) { 
     [_delegate logInViewController:self didFailToLogInWithError:error]; 
    } 
    [[NSNotificationCenter defaultCenter] postNotificationName:PFLogInFailureNotification object:self]; 

    NSString *title = NSLocalizedString(@"Login Error", @"Login error alert title in PFLogInViewController"); 
    [PFUIAlertView showAlertViewWithTitle:title error:error]; 
} 

Например, если вы любите ниже, вы не можете отобразить оповещения, когда Логин не удается. Определение MYLogInViewController в качестве подкласса PFLogInViewController

@interface MYLogInViewController : PFLogInViewController 

@end 

@implementation MYLogInViewController 

- (void)_loginDidFailWithError:(NSError *)error { 
    if ([self.delegate respondsToSelector:@selector(logInViewController:didFailToLogInWithError:)]) { 
     [self.delegate logInViewController:self didFailToLogInWithError:error]; 
    } 
    [[NSNotificationCenter defaultCenter] postNotificationName:PFLogInFailureNotification object:self]; 
} 

@end 

и использовать его вместо PFLogInViewController

MYLogInViewController *logInViewController = [[MYLogInViewController alloc] init]; 
logInViewController.delegate = self; 
[self presentViewController:logInViewController animated:YES completion:nil]; 
Смежные вопросы