2017-10-02 18 views
0

예상되는 동작 : 사용자가 TextField1 내부를 클릭하고 키보드가 튀어 나와 사용자가 값을 입력하면 NextButton을 입력하고 키보드를 닫아야합니다.소프트웨어 키보드의 비정상 종료

이상 : NextButton을 누르면 키보드가 해제되지만 다음 경고가 사라지면 다시 팝업됩니다! 왜? 키보드가 올바르게 기각됩니다 경고가 호출되지 않은 경우 한편

(//[self showDisclaimer]) ...

내가 얻을 수 있기 때문에, 나는 alertView이되지 않는 것을 알고 있지만,이 오류의 원인 아니다 대신 UIAlertController을 사용하면 정확히 동일한 동작이됩니다.

누군가가이 문제에 대해 밝힐 수 있습니까?

- (IBAction) NextButton: (id) sender 
{ 
    [self backgroundTouch:id]; //Dismisses the keyboard 
    [self showDisclaimer]; 
} 

- (void) showDisclaimer { 

    UIAlertView *alertView = [[UIAlertView alloc] 
       initWithTitle:@"Disclaimer" message: @"bla bla bla"     
       delegate:self 
       cancelButtonTitle: nil 
       otherButtonTitles:@"Don't agree", @"I AGREE", nil]; 
    [alertView show]; 
} 


- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex]; 

    if([title isEqualToString:@"I AGREE"]) 
    { 
     [self showAlert]; 
    } 
    else if([title isEqualToString:@"Don't agree"]) 
    { 
     //Do something else 
    } 
} 

- (IBAction) backgroundTouch: (id)sender { 

    [TextField1 resignFirstResponder]; 
} 
+0

jeddi – user3182143

답변

0

내 대답은위한

의 ViewController

.H 아래의 답변을 fiollow

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController<UITextFieldDelgate> 
@property (nonatomic, strong) IBOutlet UITextField *txtFld; 
@property (nonatomic, strong) UITextField *currentTxtFld; 
- (IBAction)NextButton:(id)sender; 
@end 

하는 .m

#import "ViewController.h" 
@interface ViewController() 
@end 
@implementation ViewController 
@synthesize currentTxtFld; 
@synthesiz txtFld; 


- (void)viewDidLoad { 
     txtFld.delegate = self; 
} 

- (IBAction) NextButton: (id) sender 
{ 
    [currentTxtFld resignFirstResponder]; 
    [self showDisclaimer];    
} 

- (void) showDisclaimer 
{ 
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Disclaimer" message:@"bla bla bla" preferredStyle:UIAlertControllerStyleAlert]; 
    UIAlertAction *agreeBtnAction = [UIAlertAction actionWithTitle:@"I AGREE" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){ 
     .......//Your code HEre 
    }]; 
    UIAlertAction *dontagreeBtnAction= [UIAlertAction actionWithTitle:@"Don't agree" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){ 
     .......//Your code Here 
    }]; 

    [alert addAction:agreeBtnAction]; 
    [alert addAction:dontagreeBtnAction]; 
    [self presentViewController:alert animated:YES completion:nil]; 

} 

#pragma mark - UITextField Delegate methods 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 
    currentTxtFld = textFld; 
    return YES; 
    } 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
    }