Don't disable the auth dialog login button, but ensure username and password are never nil.
Showing
2 changed files
with
5 additions
and
39 deletions
@@ -17,12 +17,11 @@ typedef enum _ASIAuthenticationType { | @@ -17,12 +17,11 @@ typedef enum _ASIAuthenticationType { | ||
17 | @interface ASIAutorotatingViewController : UIViewController | 17 | @interface ASIAutorotatingViewController : UIViewController |
18 | @end | 18 | @end |
19 | 19 | ||
20 | -@interface ASIAuthenticationDialog : ASIAutorotatingViewController <UIActionSheetDelegate, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate> { | 20 | +@interface ASIAuthenticationDialog : ASIAutorotatingViewController <UIActionSheetDelegate, UITableViewDelegate, UITableViewDataSource> { |
21 | ASIHTTPRequest *request; | 21 | ASIHTTPRequest *request; |
22 | ASIAuthenticationType type; | 22 | ASIAuthenticationType type; |
23 | UITableView *tableView; | 23 | UITableView *tableView; |
24 | UIViewController *presentingController; | 24 | UIViewController *presentingController; |
25 | - UIBarButtonItem *loginButton; | ||
26 | } | 25 | } |
27 | + (void)presentAuthenticationDialogForRequest:(ASIHTTPRequest *)request; | 26 | + (void)presentAuthenticationDialogForRequest:(ASIHTTPRequest *)request; |
28 | + (void)presentProxyAuthenticationDialogForRequest:(ASIHTTPRequest *)request; | 27 | + (void)presentProxyAuthenticationDialogForRequest:(ASIHTTPRequest *)request; |
@@ -39,7 +39,6 @@ static const NSUInteger kDomainSection = 1; | @@ -39,7 +39,6 @@ static const NSUInteger kDomainSection = 1; | ||
39 | @interface ASIAuthenticationDialog () | 39 | @interface ASIAuthenticationDialog () |
40 | - (void)show; | 40 | - (void)show; |
41 | @property (retain) UITableView *tableView; | 41 | @property (retain) UITableView *tableView; |
42 | -@property (retain) UIBarButtonItem *loginButton; | ||
43 | @end | 42 | @end |
44 | 43 | ||
45 | @implementation ASIAuthenticationDialog | 44 | @implementation ASIAuthenticationDialog |
@@ -95,7 +94,6 @@ static const NSUInteger kDomainSection = 1; | @@ -95,7 +94,6 @@ static const NSUInteger kDomainSection = 1; | ||
95 | 94 | ||
96 | [request release]; | 95 | [request release]; |
97 | [tableView release]; | 96 | [tableView release]; |
98 | - [loginButton release]; | ||
99 | [presentingController.view removeFromSuperview]; | 97 | [presentingController.view removeFromSuperview]; |
100 | [presentingController release]; | 98 | [presentingController release]; |
101 | [super dealloc]; | 99 | [super dealloc]; |
@@ -209,10 +207,8 @@ static const NSUInteger kDomainSection = 1; | @@ -209,10 +207,8 @@ static const NSUInteger kDomainSection = 1; | ||
209 | [navItem setTitle:[[[self request] url] host]]; | 207 | [navItem setTitle:[[[self request] url] host]]; |
210 | } | 208 | } |
211 | 209 | ||
212 | - [self setLoginButton:[[UIBarButtonItem alloc] initWithTitle:@"Login" style:UIBarButtonItemStyleDone target:self action:@selector(loginWithCredentialsFromDialog:)]]; | ||
213 | [navItem setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAuthenticationFromDialog:)] autorelease]]; | 210 | [navItem setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAuthenticationFromDialog:)] autorelease]]; |
214 | - [navItem setRightBarButtonItem:loginButton]; | 211 | + [navItem setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithTitle:@"Login" style:UIBarButtonItemStyleDone target:self action:@selector(loginWithCredentialsFromDialog:)] autorelease]]; |
215 | - loginButton.enabled = NO; | ||
216 | 212 | ||
217 | // We show the login form in a table view, similar to Safari's authentication dialog | 213 | // We show the login form in a table view, similar to Safari's authentication dialog |
218 | [bar sizeToFit]; | 214 | [bar sizeToFit]; |
@@ -252,6 +248,9 @@ static const NSUInteger kDomainSection = 1; | @@ -252,6 +248,9 @@ static const NSUInteger kDomainSection = 1; | ||
252 | NSString *username = [[self usernameField] text]; | 248 | NSString *username = [[self usernameField] text]; |
253 | NSString *password = [[self passwordField] text]; | 249 | NSString *password = [[self passwordField] text]; |
254 | 250 | ||
251 | + if (username == nil) { username = @""; } | ||
252 | + if (password == nil) { password = @""; } | ||
253 | + | ||
255 | if ([self type] == ASIProxyAuthenticationType) { | 254 | if ([self type] == ASIProxyAuthenticationType) { |
256 | [[self request] setProxyUsername:username]; | 255 | [[self request] setProxyUsername:username]; |
257 | [[self request] setProxyPassword:password]; | 256 | [[self request] setProxyPassword:password]; |
@@ -329,7 +328,6 @@ static const NSUInteger kDomainSection = 1; | @@ -329,7 +328,6 @@ static const NSUInteger kDomainSection = 1; | ||
329 | [textField setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; | 328 | [textField setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; |
330 | [textField setAutocapitalizationType:UITextAutocapitalizationTypeNone]; | 329 | [textField setAutocapitalizationType:UITextAutocapitalizationTypeNone]; |
331 | [textField setAutocorrectionType:UITextAutocorrectionTypeNo]; | 330 | [textField setAutocorrectionType:UITextAutocorrectionTypeNo]; |
332 | - [textField setDelegate:self]; | ||
333 | 331 | ||
334 | NSUInteger s = [indexPath section]; | 332 | NSUInteger s = [indexPath section]; |
335 | NSUInteger r = [indexPath row]; | 333 | NSUInteger r = [indexPath row]; |
@@ -370,40 +368,9 @@ static const NSUInteger kDomainSection = 1; | @@ -370,40 +368,9 @@ static const NSUInteger kDomainSection = 1; | ||
370 | return nil; | 368 | return nil; |
371 | } | 369 | } |
372 | 370 | ||
373 | -#pragma mark text field delegates | ||
374 | - | ||
375 | -- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string | ||
376 | -{ | ||
377 | - NSString *newString = [[textField text] stringByReplacingCharactersInRange:range withString:string]; | ||
378 | - NSArray *fields = [NSArray arrayWithObjects: | ||
379 | - [self usernameField], | ||
380 | - [self passwordField], | ||
381 | - [self domainField], // ends the array early if not set | ||
382 | - nil]; | ||
383 | - BOOL allFilled = YES; | ||
384 | - | ||
385 | - for (UITextField *field in fields) { | ||
386 | - NSString *text = nil; | ||
387 | - if (field == textField) { | ||
388 | - text = newString; | ||
389 | - } else { | ||
390 | - text = [field text]; | ||
391 | - } | ||
392 | - | ||
393 | - if ([text length] == 0) { | ||
394 | - allFilled = NO; | ||
395 | - break; | ||
396 | - } | ||
397 | - } | ||
398 | - | ||
399 | - loginButton.enabled = allFilled; | ||
400 | - return YES; | ||
401 | -} | ||
402 | - | ||
403 | #pragma mark - | 371 | #pragma mark - |
404 | 372 | ||
405 | @synthesize request; | 373 | @synthesize request; |
406 | @synthesize type; | 374 | @synthesize type; |
407 | @synthesize tableView; | 375 | @synthesize tableView; |
408 | -@synthesize loginButton; | ||
409 | @end | 376 | @end |
-
Please register or login to post a comment