从SuperView中删除子视图的问题 - Objective-C

Eli*_*ray 0 views objective-c subview uigesturerecognizer

不确定为什么这不能从父视图中删除添加的子视图.如果longpress操作结束,我希望它被删除.我使用NSLog进行了测试,我知道手势已正确注册为已结束,但它并未删除子视图.

-(void)addSubview:(UILongPressGestureRecognizer *)gesture {
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"overlayView" owner:self     options:nil];
    UIView *subView = [subviewArray objectAtIndex:0];

    if (gesture.state == UIGestureRecognizerStateBegan) {
        [self.view addSubview:subView];
        }
    if (gesture.state == UIGestureRecognizerStateEnded) {
        [subView removeFromSuperview];
        }    
}
Run Code Online (Sandbox Code Playgroud)

所需功能:

longpress启动:添加子视图.
longpress结束:删除子视图.

小智 5

我希望你能通过在.h文件中声明UIView*子视图然后在viewDidLoad中添加以下行来解决这个问题:

 NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"overlayView" owner:self     options:nil];
    UIView *subView = [subviewArray objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

然后:

-(void)addSubview:(UILongPressGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateBegan) {
        [self.view addSubview:subView];
        }
    if (gesture.state == UIGestureRecognizerStateEnded) {
        [subView removeFromSuperview];
        }    
}
Run Code Online (Sandbox Code Playgroud)