开发者

disable Alert view button

I have an alert view for twitter posting. Alert vi开发者_开发百科ew has 2 button and a textfield send and cancel

I want to disable send button, until user fills the message box(i.e textfield). like,empty field kind of validation.

How can I disable send button?


I had a similar requirement and was able to do this without resorting to anything explicitly prohibited by Apple (ie, the use of private classes or API's). In the example below, I find and then disable the "Recover" button.

Note #1 -- The placement of "[alert Show]" is important. It (apparently) lays out the views, so must be done before attempting to look through the view hierarchy.

Note #2 -- the "contains:" method is one I defined that does an NSString case-insensitive substring search. Use rangeOfString perhaps in your code.

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Application Warning"
                                                message:@"What should I do with the file?"
                                               delegate:self
                                      cancelButtonTitle:@"Ignore"
                                      otherButtonTitles:@"Remove", @"Recover", nil];

[alert show];

// try to find and disable "Recover" button
for(UIView *aView in alert.subviews) 
{
    if ([[[aView class] description] contains:@"Button"])
    {                
        UIButton *aButton = (UIButton *)aView;
        if ([aButton.titleLabel.text contains:@"Recover"]) 
        {
            aButton.enabled = NO;
        }                
    }
}      


This is not possible with the current SDK. You will have to create a custom view to take the user's input. The fact you are adding a textfield to the UIAlertView is itself unsupported and could break in any future SDK anyway.

I would suggest you create a custom view and if you still want it to look like a UIAlertView you can do this with appropriate images and custom buttons.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜