29

次のコードを使用してビューを無効および有効にしています....

[self.view setUserInteractionEnabled:NO];
[self.view setUserInteractionEnabled:YES];

このようにすると、すべてのサブビューも影響を受けます...すべてが無効になっています。特定のビューのみを行うにはどうすればよいですか? 出来ますか?

4

4 に答える 4

34

他のビューがメンバーであるか、self.view次のようにサブビューの配列を反復処理できると仮定すると、まったく同じです。

MyViewController.h

UIView* otherView;

MyViewController.m

otherView.userInteractionEnabled = NO; // or YES, as you desire.

また:

for (int i = 0; i < [[self.view subviews] count]; i++)
{
    UIView* view = [[self.view subviews] objectAtIndex: i];

    // now either check the tag property of view or however else you know
    // it's the one you want, and then change the userInteractionEnabled property.
}
于 2012-08-31T10:45:10.980 に答える
5
for (UIView* view in self.view.subviews) {

    if ([view isKindOfClass:[/*"which ever class u want eg UITextField "*/ class]])

        [view setUserInteractionEnabled:NO];

}

それが役に立てば幸い。幸せなコーディング:)

于 2012-08-31T10:44:40.770 に答える
1

最良のオプションは、Tagすべてのサブビューを反復するのではなく、ビューのプロパティを使用することです。インタラクションを無効にするサブビューにタグを設定し、以下のコードを使用してアクセスしてインタラクションを無効にするだけです。

// considering 5000 is tag value set for subView 
// for which we want to disable user interaction  
UIView *subView = [self.view viewWithTag:5000]; 
[subView setUserInteractionEnabled:NO];
于 2012-08-31T12:11:28.297 に答える