2014-02-06 5 views
-1

У меня есть код, который показывает UIAlertView с длинным сообщением:Некорректное uialertiview

alert = [[UIAlertView alloc] initWithTitle:@"looong text" message:@"text to loong" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
UITextField *myTextField = [alert textFieldAtIndex:0]; 
myTextField.delegate = self; 
[alert show]; 
alert.frame = CGRectMake(
    alert.frame.origin.x, 
    alert.frame.origin.y - 50, 
    alert.frame.size.width, 
    300); 

Но я получаю:

this instead

+0

кода вы предоставили, кажется, не выстраиваются в линию с скриншотом. Кроме того, проясните проблему, что у вас есть – Aaron

+0

неправильный текст сообщения –

+0

Сделайте текст более кратким и не задайте рамку явно. Если то, что вы хотите, не подойдет, создайте настраиваемый контроллер представления и представите его ... – Wain

ответ

4

Вы не должны связываться с UIAlertView это даже в документации ,

подклассы Примечание

Класс UIAlertView предназначено для использования как есть и не поддерживает подклассы. Иерархия представлений для этого класса приватная и ее нельзя изменять.

Лучше использовать его, чтобы создать свой собственный вид и отобразить это.

+1

Я не вижу, что UIAlertView подклассифицирован здесь, или изменилась иерархия представления. Что я не замечаю? –

+0

Вы заботитесь об изменении размера, и это также не сработает. Вы не можете ничего изменить дизайн/презентацию UIAlertView. – rckoenes

0

Я добавил этот код в свой класс. И это работает хорошо для меня

-(void)willPresentAlertView:(UIAlertView *)alertView { 
    if(alertView.tag == ZIP_CODE_TAG){ 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] <7) 
    { 
     NSArray *subviewArray = [alertView subviews]; 
     UILabel *message = (UILabel *)[subviewArray objectAtIndex:2]; 
     message.lineBreakMode = UILineBreakModeWordWrap; 
     message.numberOfLines = 0; 
     [message setFrame:CGRectMake(10, 95, 260, 100)]; 

     UIButton *okbutton = (UIButton *)[subviewArray objectAtIndex:3]; 
     [okbutton setFrame:CGRectMake(10, 240, 260, 42)]; 

     UIButton *cancelbutton = (UIButton *)[subviewArray objectAtIndex:4]; 
     [cancelbutton setFrame:CGRectMake(10, 287, 260, 42)]; 

     UITextField *textfield = (UITextField *)[subviewArray objectAtIndex:5]; 
     [textfield setFrame:CGRectMake(10, 198, 260, 50)]; 

     UITextField *placeTF = (UITextField *)[subviewArray objectAtIndex:6]; 
     [placeTF setFrame:CGRectMake(15, 188, 256, 50)]; 
    } 
} 

}

Смежные вопросы