Скрытое свойство UITextField не работает - PullRequest
1 голос
/ 21 февраля 2012

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

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

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

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

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

ОБНОВЛЕНИЕ: Я использовал следующий код:

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];
        noteText.text=@"Hi";
        noteText.hidden=true;
    }
}
}

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

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

ОБНОВЛЕНИЕ 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];
        }

Ответы [ 4 ]

1 голос
/ 21 февраля 2012

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

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

textfield.alpha = 0;

Показать снова:

textfield.alpha = 1;
0 голосов
/ 21 февраля 2012

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

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

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

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

0 голосов
/ 21 февраля 2012

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

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

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

0 голосов
/ 21 февраля 2012

Свойство не может быть установлено как активное и деактивированное, так что это будет лучше, если вы установите свойство в соответствии с ситуацией, как при нажатии кнопки 1

textField.textAlignment = UITextAlignmentCenter;

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

textField.textAlignment = UITextAlignmentLeft;

Обновление:

   field.selected = TRUE;

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

Обновление 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: пожалуйста, скачайте образец код (testTextField)

...