代码之家  ›  专栏  ›  技术社区  ›  Gagan_iOS

UICollectionReusableView中的UIBUtton操作

  •  1
  • Gagan_iOS  · 技术社区  · 7 年前

    我正在UICollectionReusableView中添加UIButton。我可以添加button&it的action,但是button action不起作用。我也尝试过添加TapGesture&启用UICollectionReusableView的用户交互,但没有效果。下面是我的代码

    - (instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            self.userInteractionEnabled = YES;
            self.backgroundColor = [UIColor menigaLightBackgroundColor];
            UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.frame];
            imageView.userInteractionEnabled = YES;
            imageView.image = [UIImage imageNamed:@"Login_115"];
            imageView.contentMode = UIViewContentModeScaleAspectFill;
            imageView.tag = 10;
            [self addSubview:imageView];
    
            UIImage *titleImage  = [UIImage imageNamed:@"titleLogo"];
            UIImageView *imageViewTitle = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, titleImage.size.width, titleImage.size.height)];
            imageViewTitle.userInteractionEnabled = YES;
            imageViewTitle.center = self.center;
            imageViewTitle.contentMode = UIViewContentModeScaleAspectFit;
            imageViewTitle.image = titleImage;
            [self addSubview:imageViewTitle];
    
            float margin = 15.0;
            //Title Label  //10 is the tag for Arch image view
            titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(margin, CGRectGetMaxY([self viewWithTag:10].frame)+ 10 , CGRectGetWidth(self.frame)-margin*2, 60.0)];
            titleLabel.text = @"Your wallets have been linked successfully. Link more accounts now to fully understand your spending.";
            titleLabel.numberOfLines = 4;
            titleLabel.userInteractionEnabled = YES;
            titleLabel.textAlignment = NSTextAlignmentCenter;
            titleLabel.font = [UIFont getDINRegularFontOfSize:16];
            titleLabel.textColor = [UIColor menigaDarkTextColor];
            [self addSubview:titleLabel];
    
            //Buttons
            linkAccountButton = [[CustomButtonClass alloc] initWithFrame:CGRectMake(margin,  CGRectGetMaxY(titleLabel.frame)+ 10, CGRectGetWidth(self.frame)-margin*2, 44.0)];
            linkAccountButton.userInteractionEnabled = YES;
            linkAccountButton.layer.cornerRadius = 22.0;
            [linkAccountButton setTitle:@"Link An Account" forState:UIControlStateNormal];
            [linkAccountButton.titleLabel setFont:[UIFont getRobotFontOfSize:14]];
            [linkAccountButton setBackgroundColor:[UIColor menigaBrandColorRed]];
            [self addSubview:linkAccountButton];
            UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(linkButtonPressed)];
            tapGesture.numberOfTapsRequired = 1;
            [linkAccountButton addGestureRecognizer:tapGesture];
    
            [linkAccountButton buttonTouchUpInsideWithCompletion:^{
                MENIGAChooseOrganizationVC *vc = [[MENIGAChooseOrganizationVC alloc] init];
                vc.signupFlow = YES;
                [_parent.navigationController pushViewController:vc animated:YES];
            }];
    
            //set button hidden
            titleLabel.hidden = YES;
            linkAccountButton.hidden = YES;
    
        }
        return self;
    }
    

    //MARK:- Link button Action
    -(void)linkButtonPressed
    {
       OrganizationVC *vc = [[OrganizationVC alloc] init];
        vc.signupFlow = YES;
        [_parent.navigationController pushViewController:vc animated:YES];
    }
    

    我也通过了下面的链接

    Link

    请帮帮我,我做错什么了。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Benhamine    7 年前

    在UIButtons上使用修饰,而不是手势识别器

    [linkAccountButton addTarget:self action:@selector(linkButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    

    然后行动应该是:

    -(void) linkButtonPressed:(UIButton*)sender