iOS button被view遮住,想點擊怎麼破

來源:互聯網
上載者:User

標籤:

UIView的提供了這個方法:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;

1.建立CustomView繼承自UIView :

CustomView.h

@property (strong,nonatomic)NSArray * passthroughViews;

@property (nonatomic)BOOL testHits;

 -(BOOL) isPassthroughView: (UIView*) view;

CustomView.m

-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event{

    if(self.testHits){

        return nil;

    }    

    if(!self.passthroughViews

       || (self.passthroughViews && self.passthroughViews.count == 0)){

        return self;

    } else {

        UIView *hitView = [super hitTest:point withEvent:event];

        if (hitView == self) {

            self.testHits = YES;

            CGPoint superPoint = [self.superview convertPoint:point fromView:self];

            UIView *superHitView = [self.superview hitTest:superPoint withEvent:event];

            self.testHits = NO;

            if ([self isPassthroughView:superHitView]) {

                hitView = superHitView;

            }

        }

        return hitView;

    }

}

- (BOOL)isPassthroughView:(UIView *)view {

    if (view == nil) { 

        return NO;

    }

    if ([self.passthroughViews containsObject:view]) {

        return YES;

    }

    return [self isPassthroughView:view.superview];

}

 

2.建立ViewController繼承自UIViewController :

ViewController.m

- (void)viewDidLoad {

    [super viewDidLoad];

    self.passthroughButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [self.passthroughButton setTitle:@"Passthrough" forState:UIControlStateNormal];

    [self.view addSubview:self.passthroughButton];

    self.passthroughButton.frame = CGRectMake(20, 50, 120, 28);

    [self.passthroughButton addTarget:self action:@selector(push) forControlEvents:UIControlEventTouchUpInside];

 

    CustomView *customView = [[CustomView alloc] initWithFrame:CGRectMake(80, 10, 300, 200)];

    customView.backgroundColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:.5];

    //customView.passthroughViews = [NSArray arrayWithObject:self.passthroughButton];

    [self.view addSubview:customView];

    

}

 

iOS button被view遮住,想點擊怎麼破

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.