2012-02-21 9 views
1

В моем приложении для iPhone/iPad (в Objective-C) есть несколько UITextFields, которые я добавляю progrmatically, и они далее добавляются в массив.скрытое свойство UITextField не работает

Я хочу установить свойство hidden на некотором нажатии кнопки (где я нашел конкретный UITextField, пройдя массив).

Когда я установил textfilled.hidden = true (при событии нажатия кнопки), он не скрывается в отключенном режиме, и если я снова установил textfilled.hidden = false, тогда он включит.

Я попытался изменить другие свойства, такие как текст, цвет фона и т. Д. На том же уровне, все работает отлично, за исключением скрытого свойства.

Примечание: если он установил textfilled.hidden = true после добавления текстового поля (с тем же объектом UITextField), то он отлично скрывается.

UPDATE: Я использовал следующий код:

UITextField *textField=[[[UITextField alloc] initWithFrame:CGRectMake(lastPoint.x, lastPoint.y, 60, 20)] autorelease]; 
    textField.backgroundColor=[UIColor greenColor];  
    textField.textColor=[UIColor blackColor]; 
    [textField addTarget:self action:@selector(handleEnterPressed:) forControlEvents:UIControlEventEditingDidEndOnExit]; 
    [capturedImage addSubview:textField]; 
    [noteTextArray addObject:textField]; 

В этом я создаю UITextField и добавить его в массив (noteTextArray) и вызов .hidden недвижимости здесь:

-(void)handleEnterPressed:(UITextField *)textField 
{ 
for(UITextField *noteText in noteTextArray) 
{ 
    if(noteText.tag==textField.tag) 
    { 
     noteText.backgroundColor=[UIColor purpleColor]; 
     [email protected]"Hi"; 
     noteText.hidden=true; 
    } 
} 
} 

Но это не скрывает текстовое поле.

Пожалуйста, дайте мне знать, есть ли у кого-нибудь идеи или решения.

UPDATE 1: Изображение было принято скриншота текущего зрения WebView

UIGraphicsBeginImageContextWithOptions(webview.frame.size,NO,0.0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
    [webview.layer renderInContext: context]; 
    capturedImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();  

и изображение дополнительно добавляется uiscrollviewer:

scrollViewer.delegate=self;  
     scrollViewer.contentOffset = CGPointZero; 
     capturedImage.contentMode= UIViewContentModeScaleAspectFit; 
     scrollViewer.userInteractionEnabled=true; 
     scrollViewer.contentMode= UIViewContentModeScaleAspectFit; 
     scrollViewer.scrollEnabled=YES; 
     [scrollViewer setBouncesZoom:YES]; 
     scrollViewer.clipsToBounds= YES; 
     scrollViewer.contentSize = capturedImage.image.size; 
     scrollViewer.minimumZoomScale=0.1; 
     scrollViewer.maximumZoomScale=5.0; 
     scrollViewer.zoomScale=0.5; 
     if(capturedImage.superview != scrollViewer) 
     { 
      [scrollViewer addSubview:capturedImage]; 
     } 
+0

Спасибо Aadhira за то, что вы сделали меня правильно! Вы знаете ответ на вопрос? Если да. пожалуйста, отправьте ответ. –

+0

вы устанавливаете textfilled.hidden = true/false ...... вместо этого вы должны использовать textfilled.hidden = YES/NO. – Ravin

+0

@Ravin Я установил оба пути, но он не работал вообще :( –

ответ

0

Свойство не может установить в качестве активного и деактивировать так Это будет лучший подход, если и установить свойство в зависимости от ситуации, как на кнопке 1 нажимается

textField.textAlignment = UITextAlignmentCenter; 

и нажатой кнопке

textField.textAlignment = UITextAlignmentLeft; 

обновление:

field.selected = TRUE; 

    if([field isHidden]) 
{ 
    [field setHidden:FALSE]; 
} 
else 
{ 
    [field setHidden:TRUE]; 
} 

Update 2:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    field = [[UITextField alloc] initWithFrame:CGRectMake(120, 20, 150, 20)]; 
    [self.view addSubview:field]; 
    field.placeholder = @"placeholder"; 
    field.backgroundColor = [UIColor redColor]; 
    field.textColor = [UIColor whiteColor]; 

} 

-(IBAction) btnPressed:(id)sender 
{ 

    field.selected = TRUE; 

     if([field isHidden]) 
    { 
     [field setHidden:FALSE]; 
    } 
    else 
    { 
     [field setHidden:TRUE]; 
    } 


} 

обновление 3: пожалуйста, загрузите sample код (testTextField)

+0

Привет @Kulss спасибо за ответ, но я не прошу, как установить textAlignment, я спрашиваю, как показать/скрыть его. Как tex tfilled.hidden не работает, так как он должен работать. –

+0

проверить мой выше обновленный код, это определенно поможет u .. у меня есть тест – kulss

+0

Я применил ваш код, но не работает. –

1

Вы можете использовать свойство альфа.

Чтобы скрыть:

textfield.alpha = 0; 

Чтобы показать снова:

textfield.alpha = 1; 
+0

Я пробовал использовать textfield.alpha, но он didn ' t work ......... –

2

Брат послушай, я сделал Xcode проект, а затем добавил некоторые UITextFields программно.Затем кнопки, чтобы показать/скрыть, в каждом случае, используете ли вы true/false или YES/NO UITextField, скрыты/показаны.

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

+0

Я добавил код, который я использую в своем приложении, в области обновления моего исходного сообщения. –

+0

Это логическая ошибка в вашем коде – Dhilip

+0

@Dhilip Какая у вас ошибка? –

0

Я просто попробовал свой код в своем проекте, его работа была идеальной. на самом старте он не работал, потому что я не выделил noteTextArray.

поэтому отлаживаем и проверяем, переходит ли элемент управления UIControlEventEditingDidEndOnExit в метод «handleEnterPressed», вот и все. Если он находится в handleEnterPressed и noteTextArray не пуст, тогда он будет работать нормально, нет ничего плохого в скрытом свойстве. Я уже говорил, что проблема в другом месте.

поэтому проверить noteTextArray ли пуст или не

+0

Я проверил все входы, и все они имеют соответствующие значения, а события работают нормально. Но проблема остается такой же. Если я буду скрывать текстовое поле во время создания, тогда он скрывается, но в случае, если он просто не работает. –

0

Там нет необходимости для проверки тегов - у вас есть вся информация в отправителе. Вы можете изменить метод делегата, как это:

-(void)handleEnterPressed:(id)sender 
{ 
    NSLog (@"delegate called fot textfield with tag %d",(UITextField *)sender.tag); 

    (UITextField *)sender.backgroundColor = [UIColor purpleColor]; 
    (UITextField *)[email protected]"Hi"; 
    (UITextField *)sender.hidden=YES; 
} 

И проверить в консоли, если ваш метод делегата вызывается на всех.

+0

Я уже пробовал это и не работал ... он просто скрывает мой текст и отключает все операции, но цвет фона все еще есть :( –

+0

Это странно. Попробуйте [(UITextField *) отправитель setHidden: YES ]; вместо этого –

+0

В основном код записывается. Я проверил в своем приложении, что добавляю текстовое поле к uiimageview (captureImage), но я добавляю его в self.view вместо captureImage, тогда он отлично работает. prblem заключается в том, что если я не добавлю его в captureImage, он не будет подкрашен вместе с изображением (согласно функциональности). –

0

Привет, Спасибо вам всем за ваше время и помощь. На самом деле проблема заключается в моем конце (значит, при сохранении изображения). Мне не нужно каждый раз сохранять изображение в объекте.

Еще раз спасибо!

@Kulss Спасибо за ваше время. Я отмечаю ваш ответ как окончательный, так как он также помогает мне решить еще одну второстепенную проблему.

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