Search code examples
iosios6ios7uialertview

UIAlertView with textfield and three buttons issue in ios 6


     UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Enter Student Name"        message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", @"Save and Add", nil];
                alert.tag = 1;
                alert.transform=CGAffineTransformMakeScale(1.0, 0.75);
                alert.alertViewStyle=UIAlertViewStylePlainTextInput;
                [alert show];

-(void)willPresentAlertView:(UIAlertView *)alertView {

    if (alertView.tag == 1) {


        for (UIView *view in alertView.subviews) {
            if ([view isKindOfClass:[UITextField class]]||
                [view isKindOfClass:[UIButton class]] || view.frame.size.height==31) {
                CGRect rect=view.frame;
                rect.origin.y += 65;
                view.frame = rect;
            }
        }

    }


}

As i am showing alertview with textfield and three buttons its working fine in ios 7 but not in ios 6 . have a look at both ios images -- > enter image description here

enter image description here

as you all can see the alertview of ios 6 is disturbed ... but i am not getting what i am doing wrong there .


Solution

  • Try this code

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter Student Name"
                                                    message:@""
                                                   delegate:self
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"Save",@"Save & Add",nil];
    
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alert show];
    
    
    
    -(void)willPresentAlertView:(UIAlertView *)alertView {
    
    if ([[[UIDevice currentDevice] systemVersion] floatValue] <7) 
    
       {
        [alertView setFrame:CGRectMake(17, 30, 286, 280)];
        NSArray *subviewArray = [alertView subviews];
        UILabel *message = (UILabel *)[subviewArray objectAtIndex:2];
        [message setFrame:CGRectMake(10, 46, 260, 20)];
        UIButton *cancelbutton = (UIButton *)[subviewArray objectAtIndex:3];
        [cancelbutton setFrame:CGRectMake(10, 125, 260, 42)];
        UIButton *savebutton = (UIButton *)[subviewArray objectAtIndex:4];
        [savebutton setFrame:CGRectMake(10, 170, 260, 42)];
        UIButton *saveAddbutton = (UIButton *)[subviewArray objectAtIndex:5];
        [saveAddbutton setFrame:CGRectMake(10, 220, 260, 42)];
        UITextField *textfield = (UITextField *)[subviewArray objectAtIndex:6];
        [textfield setFrame:CGRectMake(10, 80, 266, 50)];
        UITextField *placeTF = (UITextField *)[subviewArray objectAtIndex:7];
        [placeTF setFrame:CGRectMake(15, 70, 256, 50)];
       }
    
    }
    

    Check for ios 6 image

    enter image description here

    EDIT

    For rotation problem use this code

    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
    if (UIInterfaceOrientationPortrait == UIInterfaceOrientationIsPortrait(fromInterfaceOrientation))
    {
               [alert setFrame:CGRectMake(100, 10, 286, 320)];
        NSArray *subviewArray = [alert subviews];
        UILabel *messageLB = (UILabel *)[subviewArray objectAtIndex:2];
        [messageLB setFrame:CGRectMake(10, 46, 260, 20)];
        UIButton *cancelBT = (UIButton *)[subviewArray objectAtIndex:3];
        [cancelBT setFrame:CGRectMake(10, 125, 260, 42)];
        UIButton *okBT = (UIButton *)[subviewArray objectAtIndex:4];
        [okBT setFrame:CGRectMake(10, 170, 260, 42)];
        UIButton *searchBT = (UIButton *)[subviewArray objectAtIndex:5];
        [searchBT setFrame:CGRectMake(10, 220, 260, 42)];
        UITextField *plateTF = (UITextField *)[subviewArray objectAtIndex:6];
        [plateTF setFrame:CGRectMake(10, 80, 266, 50)];
        UITextField *placeTF = (UITextField *)[subviewArray objectAtIndex:7];
        [placeTF setFrame:CGRectMake(15, 70, 256, 50)];
    
      
    }
    else{
       
        [alert setFrame:CGRectMake(17, 30, 286, 280)];
        NSArray *subviewArray = [alert subviews];
        UILabel *messageLB = (UILabel *)[subviewArray objectAtIndex:2];
        [messageLB setFrame:CGRectMake(10, 46, 260, 20)];
        UIButton *cancelBT = (UIButton *)[subviewArray objectAtIndex:3];
        [cancelBT setFrame:CGRectMake(10, 125, 260, 42)];
        UIButton *okBT = (UIButton *)[subviewArray objectAtIndex:4];
        [okBT setFrame:CGRectMake(10, 170, 260, 42)];
        UIButton *searchBT = (UIButton *)[subviewArray objectAtIndex:5];
        [searchBT setFrame:CGRectMake(10, 220, 260, 42)];
        UITextField *plateTF = (UITextField *)[subviewArray objectAtIndex:6];
        [plateTF setFrame:CGRectMake(10, 80, 266, 50)];
        UITextField *placeTF = (UITextField *)[subviewArray objectAtIndex:7];
        [placeTF setFrame:CGRectMake(15, 70, 256, 50)];
    
    }
    }