2013-02-28 2 views
0

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

Если значение является действительным, он должен включить и стать осязаемыми ...

Как я могу это сделать?

Я использую этот код, но он не работает ...

//Reset values 
- (IBAction)resetPressed:(UIButton *)sender { 
    if (didPan==1) { 
     resetPressed.enabled = YES; 
    } else { 
     resetPressed.enabled = NO; 
    } 
    self.prozent=0; 
    didPan=NO; 

    //remove drawn intersection line 
    [intersectionLine removeFromSuperview]; 
    NSLog(@"resetPressed"); 
} 
+0

Где вы вводите значение? UITextField? – Retterdesdialogs

+0

Значение будет дано с помощью касания Жест (строка) Если я пересекаю линию didPan, будет 1, если не didPan будет 0 –

ответ

0

*** Я решил проблему после долгого времени поиска.

я узнал, что ResetButton должен иметь свойство это выглядит следующим образом

@property (сильный, неатомический) IBOutlet UIButton * resetButton;

Затем я выделил кнопку и непроверенные включен из-под контроля (пробовал это раньше, но он не работал)

Я использовал button.enabled = YES и изменил цвет, используя [resetButton SetAlpha: 1] для нормальный и [resetButton setAlpha: 0.5] для не активирован

Спасибо, ребята, за вашу помощь! *

2

Чтобы активировать кнопку, если она соответствует вашим критериям, используйте setEnabled: ДА.

E.g.

UIButton *button = (UIButton *)sender; 
[button setEnabled:YES]; 

еще лучший способ сделать это было бы использовать точечную нотированы версию, как например:

button.enabled = YES; 
+0

В современной объективе-c предпочтительной является точечная обозначение. то есть 'button.enabled = YES;' – Andy

+0

@ Andy Спасибо, я упомяну, что в ответе, если все в порядке. – lifetimes

+0

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

1

В вашем состоянии вы используете if (didPan==1) { хотя бы дать нужный результат, но его лучше использовать if(didPan)

вторых resetPresed этого имени действий не кнопка или отправитель, так что вы должны использовать отправитель вместо resetPressed

и для установки состояния кнопки используйте [sender setEnabled:YES];//OR sender.enabled=YES;

так что ваш код будет выглядеть следующим образом

- (IBAction)resetPressed:(UIButton *)sender { 

if (didPan) { 
     [sender setEnabled:YES]; //OR sender.enabled=YES; 
    } else { 
     [sender setEnabled:NO]; // OR sender.enabled=NO; 
    } 
} 
+0

'button.enabled = YES' или' [button setEnabled: YES] ' –

+0

' [sender setEnabled: YES]; 'это – nsgulliver

+0

заменить' = 'на': ':) –

-1

, если ввести значение, например, в UITextField, а затем использовать делегат текстовое поле, чтобы, если определить значение правильно:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 

    if ([textField.text isValid]) { // check if text in textfield is valid 

     button.enabled = YES; 
    } else { 
     button.enabled = NO; 
    } 

    return YES; 
} 
0

Если вы вводите значение в UITextField, вы можете установить делегат для текстового поля и писать код для включения/выключения в textFieldDidEndEditing: метод объекта делегата. i.e; theButton.enabled = YES/NO Из вашего кода, похоже, вы пишете код для отключения кнопки внутри действия самой кнопки, которая не будет работать, если кнопка отключена.

+0

это тоже правильно, но я не включаю кнопку при записи значения. – Retterdesdialogs

+0

который является окей. Сохраняйте состояние по умолчанию как отключенное и после завершения редактирования проверяйте значение (textField.text даст значение внутри метода делегата) и соответственно включите/отключите. – Rakesh

+0

да, но вам нужно закрыть клавиатуру или уволить первого ответчика другим способом, чтобы проверить, действительно ли это значение :). – Retterdesdialogs