user3443848
user3443848

Reputation: 3

How to make UIbutton only appear when text is written?

I'm making a word game, and ive called my custom keyboards textfield _textbox

Ive put a x button that represents "clear written text" and I only need it to appear when the user types letters into the textfield!

Then disappear after the letters were cleared!

code:

- (IBAction)btnclear:(id)sender {
NSString *oldString = _textbox.text;
NSString *newString;
newString = [oldString substringFromIndex: _textbox.text.length];
[_textbox setText:newString];

} 

The image is on the button!

Upvotes: 0

Views: 82

Answers (5)

WKC
WKC

Reputation: 11

There are two ways, and by hidden do you mean not visible or just disabled?

For not visible, use the button.hidden property. For disabled (meaning it can't be touched), use the button.enabled property.

As for the textfield you could do something like this:

if ([textfield.text length] > 0) {...} else {...}

//extra stuff and suggestions Also if you are using the text in the textfield to be added to some other view (say its an add item screen), you have to create a @property regarding the added item. And then you could, rather than the aforementioned mention write the code like in the .m:

if (self.aProperty != nil) {
    button.hidden = NO;
} else {
    button.hidden = YES; 

And you'd have to declare the property in the .h file:

@property (nonatomic, strong) ObjectYouAreUsing *aProperty;

And this may be the reason it's not working but create a new file with the NSObject subclass. This will be the ObjectYouAreUsing.

This way you can access the pure object you are using and just import it where ever you need it. Also with this, if the user were to close the screen you could then write the initWithCoder method.

Upvotes: 0

jnix
jnix

Reputation: 480

Use UITextFielDelegate method

 - (void)textFieldDidEndEditing:(UITextField *)textField
    {

    if(textField.text.length==0){
        textXclear.hidden = NO;
       }else{
        textXclear.hidden = YES;
      }
    }

Upvotes: 0

iOS Dev
iOS Dev

Reputation: 4248

Use the following code, it uses UITextFieldTextDidChangeNotification notification,which is called every time you change text in your textfield, and hides or shows your button depending on input text.

    - (void) viewDidLoad
    {
        [super viewDidLoad];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:UITextFieldTextDidChangeNotification object: _textbox];
    }

    - (void) textDidChange:(NSNotification *)notification
    {
        UITextField *tf = (UITextField*)notification.object;
       _button.hidden = (tf.text.length == 0);
    }

    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object: _textbox];
    }

Upvotes: 1

David Berry
David Berry

Reputation: 41236

If you're using a UITextField you can use the standard clear button with:

_textbox.clearButtonMode = UITextFieldViewModeWhileEditing;

If you're wanting a custom appearance to the button you can use rightView and rightViewMode to manage the state for you.

Upvotes: 1

santibernaldo
santibernaldo

Reputation: 835

With the property "hidden" of the UIButton you can hide it

Check if there is text on your textView, and then hide your button

Upvotes: 0

Related Questions