0

スクリーンショットに示すように、内部の uitextview をサブビューするカスタム alertview を作成します。

サブビューされたテキストビューを含むアラートビュー

テキストビューが空のときに送信ボタンを無効にしたいので、alertViewShouldEnableFirstOtherButton メソッドを編集しました。

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
    if ( alertView.tag == 5000 ) {

    for(UIView *view in alertView.subviews) {
        if([view isKindOfClass:[UITextView class]]) {
            UITextView *textField = (UITextView *)view;

            if ( textField.text.length == 0 ) {
                return NO ;
            }
            return YES ;

        }
    }
}

else {

    return YES ;
}

}

最初は送信ボタンが無効になっていますが、編集した後(テキストビューに何かを入力)、送信ボタンはまだ無効になっています。

では、サブビューしたテキストビューに何かを入力した後、送信ボタンを有効にする方法を教えてもらえますか? 大きな助けをありがとう。

##########初編集

以下は、アラートビューに関する完全なコードです。

- (void)addRemarkAlert {

alert = [[UIAlertView alloc]
                      initWithTitle:[NSString stringWithFormat:@"Remarks\n\n\n\n\n\n"]
                      message:nil
                      delegate:self
                      cancelButtonTitle: @"Cancel"
                      otherButtonTitles:@"Submit", nil ];

// textView to subview in the alertview
textView_onAlertView = [[UITextView alloc]initWithFrame:CGRectMake(12, 50, 260, 100)];
textView_onAlertView.delegate = self ;
textView_onAlertView.layer.borderWidth = 2.0f;
textView_onAlertView.layer.borderColor = [[UIColor darkGrayColor] CGColor];
textView_onAlertView.layer.cornerRadius = 10.0f;
textView_onAlertView.clipsToBounds = YES ;
textView_onAlertView.autocorrectionType = UITextAutocorrectionTypeNo ;
textView_onAlertView.autocapitalizationType = UITextAutocapitalizationTypeSentences ;
textView_onAlertView.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12];
[alert addSubview:textView_onAlertView];

alert.tag = 5000 ;
[alert show];

}

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{

if ( alertView.tag == 5000 ) {

    for(UIView *view in alertView.subviews)
    {
        if([view isKindOfClass:[UIButton class]])
        {
            UIButton *aButton = (UIButton *)view;
            if([aButton.titleLabel.text isEqualToString:@"Submit"])
            {
                if ( textView_onAlertView.text.length> 0 )
                {
                    ((UIButton *) view).enabled = YES;

                }
                else
                {

                    ((UIButton *) view).enabled = NO;

                }
            }
        }
    }


    return NO;
}

else {

    return YES ;
}

}

4

1 に答える 1

1
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
    NSLog(@"%d",tv.text.length);

    for(UIView *view in alertView.subviews)
    {
        if([view isKindOfClass:[UIButton class]])
        {
            UIButton *aButton = (UIButton *)view;
            if([aButton.titleLabel.text isEqualToString:@"done"])
            {
                if ( tv.text.length> 0 )
                {
                    ((UIButton *) view).enabled = YES;
                }
                else
                {
                    ((UIButton *) view).enabled = NO;
                }
            }
        }
    }

    return NO;
}

//////////////////////////////////////Entire code for your question

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self addRemarkAlert];
}

- (void)addRemarkAlert
{
    alert = [[UIAlertView alloc]
             initWithTitle:[NSString stringWithFormat:@"Remarks\n\n\n\n\n\n"]
             message:nil
             delegate:self
             cancelButtonTitle: @"Cancel"
             otherButtonTitles:@"Submit", nil ];

    // textView to subview in the alertview
    textView_onAlertView = [[UITextView alloc]initWithFrame:CGRectMake(12, 50, 260, 100)];
    textView_onAlertView.delegate = self ;
    textView_onAlertView.layer.borderWidth = 2.0f;
    textView_onAlertView.layer.borderColor = [[UIColor darkGrayColor] CGColor];
    textView_onAlertView.layer.cornerRadius = 10.0f;
    textView_onAlertView.clipsToBounds = YES ;
    textView_onAlertView.autocorrectionType = UITextAutocorrectionTypeNo ;
    textView_onAlertView.autocapitalizationType = UITextAutocapitalizationTypeSentences ;
    textView_onAlertView.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12];
    [alert addSubview:textView_onAlertView];

    alert.tag = 5000 ;
    [alert show];
}

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{

    if ( alertView.tag == 5000 ) {

        for(UIView *view in alertView.subviews)
        {
            if([view isKindOfClass:[UIButton class]])
            {
                UIButton *aButton = (UIButton *)view;
                if([aButton.titleLabel.text isEqualToString:@"Submit"])
                {
                    if ( textView_onAlertView.text.length> 0 )
                    {
                        ((UIButton *) view).enabled = YES;

                    }
                    else
                    {

                        ((UIButton *) view).enabled = NO;

                    }
                }
            }
        }

        return NO;
    }
    else
    {
        return YES ;
    }
}

- (void)textViewDidChange:(UITextView *)textView
{
    [self alertViewShouldEnableFirstOtherButton:alert];
}
于 2013-11-13T09:09:43.193 に答える