簡體   English   中英

UIWindow addSubview處理事件

[英]UIWindow addSubview handle events

我想通過UIViewController構建自定義警報 ,並將其視圖作為子視圖添加到當前窗口。 該視圖顯示得很好,但是我無法處理任何觸摸事件。

我已經嘗試過多次向此viewcontroller添加按鈕並添加目標。 我也嘗試過添加UITapGestureRecognizer並將視圖的userInteractionEnabled設置為true ,但是即使我清除了剛剛離開按鈕的所有子視圖,這也失敗了。

我錯過了什么嗎?

這是代碼:

CustomAlert Viewcontroller:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor clearColor];

    backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    backgroundView.backgroundColor = [UIColor blackColor];
    backgroundView.alpha = 0.5;
    [self.view addSubview:backgroundView];


    backImage = [[UIImageView alloc]initWithFrame:CGRectMake((self.view.frame.size.width - 300) / 2, (self.view.frame.size.height - 250) / 2, 300, 250)];

    backImage.image = [UIImage imageNamed:@"AlertBackground"];
    [self.view addSubview:backImage];

    confirmButton = [[UIButton alloc]initWithFrame:CGRectMake( backImage.frame.origin.x + 100 , backImage.frame.origin.y + 250 - 40, 100, 26)];
    [self.view addSubview:confirmButton];
    [confirmButton addTarget:self action:@selector(confirmButtonClick:) forControlEvents:UIControlEventTouchUpInside];
    confirmButton.backgroundColor = [UIColor redColor];
    [confirmButton setTitle:@"click me" forState:UIControlStateNormal];
}

-(void)confirmButtonClick:(UIButton*)sender{

    [self.view removeFromSuperview];
}

-(void)show{
    UIWindow * window = (UIWindow*)[UIApplication sharedApplication].keyWindow;
    [window addSubview:self.view];
}

方法調用自定義警報:

CustomAlert * alert = [[CustomAlert alloc]init];
[alert show];

嘗試用這些重寫-show {}方法

UIWindow * window = (UIWindow*)[UIApplication sharedApplication].keyWindow;
[window.rootViewController.view addSubview:self.view];

更新:如果以前沒有幫助,請嘗試覆蓋

-(void)show{
    UIWindow * window = (UIWindow*)[UIApplication sharedApplication].keyWindow;

    [window.rootViewController addChildViewController:self];
    [window.rootViewController.view addSubview:self.view];
    [self didMoveToParentViewController:window.rootViewController];
}

這三種方法建立了親子關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM