2013-10-07 3 views
-2

У меня есть приложение, в котором я использую определенный дизайн по какой-то причине. Я помещал текстовое поле в виде предупреждения над другой кнопкой с фоновым изображением. Все отлично работает в версии ios 6.Текстовое поле в alertview не работает в ios7?

UIAlertView *av=[[UIAlertView alloc] initWithTitle:@"fdhdj" message:@" hdfjkhfjkhdk" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@" ",@"cancel",nil]; 
    av.alertViewStyle = UIAlertViewStylePlainTextInput; 
namefield = [[UITextField alloc] initWithFrame:CGRectMake(10.0,43.0, 264.0, 44.0)]; 
    namefield.borderStyle = UITextBorderStyleNone; 
    namefield.background = [UIImage imageNamed:@"text_field_default.png"]; 
    namefield.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    namefield.textAlignment = UITextAlignmentCenter; 
    //[namefield setBackgroundColor:[UIColor whiteColor]]; 
    [av addSubview:namefield]; 
    [namefield release]; 
    av.tag=12; 
    av.delegate=self; 
    [av show]; 

    [av release]; 

Но теперь в ИОС 7, я слышал, что вы не можете легко изменить иерархию представление по UIAlertView. Одна альтернатива для этого случая установить

alert.alertViewStyle = UIAlertViewStylePlainTextInput

Но мы можем добавить, что текстовое поле, куда мы хотим? Как в моем случае выше первого другого элемента. Кто-нибудь может мне помочь?

+2

Почему бы вам не сделать свою собственную иерархию UIView, что у вас есть полный контроль вместо того, чтобы обманывать UIAlertView. [Документация Apple для состояний UIAlertView] (https://developer.apple.com/library/ios/documentation/uikit/reference/UIAlertView_Class/UIAlertView/UIAlertView.html#//apple_ref/doc/uid/TP40006802-CH3-DontLinkElementID_2) : «Иерархия представления для этого класса является частной и не должна быть изменена». Это то, что вы делаете, добавляя subviews. –

ответ

0

Простой ответ на ваш вопрос НЕТ, вы не можете изменить что-либо в этом testField для UIAlertViewStylePlainTextInput и вы не должны.

Это от Apple:

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

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

Есть хорошая альтернатива в Интернете, вы можете проверить в cocoacontrols.com

3
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Enter Student Name" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save",nil]; 

[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
[alertView show]; 

я имел обыкновение делать, как это, и его работу очень тонкой

+0

, пожалуйста, просто прочитайте мой вопрос, а затем ответьте – hacker

2

Это мой компонент для поддержки addSubview с alertView в iOS7.

CXAlertView - Пользовательский предупреждающий просмотр, который позволяет добавлять представление в качестве основного контента.

enter image description here

0

Вы не можете легко изменить иерархию представление по UIAlertView в IOS 7. (Вы не должны, документация конкретно не говорит вам .) Перейдите на форумы разработчиков, чтобы долго обсуждать это.

Один из вариантов в вашем случае - установить alert.alertViewStyle = UIAlertViewStylePlainTextInput; Это добавит вам текстовое поле. Вы можете получить к нему доступ в обратном вызове делегата UIAlertView, используя UITextField * textField = [alertView textFieldAtIndex: 0] ;.

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