찾다

 >  Q&A  >  본문

ios - 为何按钮点击无反应?

/*这段代码功能是添加按钮,视图上移,但是发现在上移的视图里,添加的按钮不响应,这是为什么呢?*/


    -(void)showView
    {
        UIView *addView = [[UIView alloc] initWithFrame:CGRectMake(0, SCREENSIZE.height,SCREENSIZE.width, 80)];
        [addView setBackgroundColor:[UIColor whiteColor]];
        UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 80, 40)];
        [btn setTitle:@"相册" forState:UIControlStateNormal];
        [btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(openPhoto1) forControlEvents:UIControlEventTouchUpInside];
        [addView addSubview:btn];
        [self.view addSubview:addView];
        
        //计算控制器的view需要平移的距离
        CGFloat moveY=0;
        if (_bShowAddView==false)
            moveY  = -80;
        else
            moveY=0;
        _bShowAddView=!_bShowAddView;
        //
        //    // 4,执行动画
        [UIView animateWithDuration:0.5 animations:^{
            self.view.transform = CGAffineTransformMakeTranslation(0, moveY);
        }];
    }
    -(void)openPhoto1
    {
        NSLog(@"test");
    }
PHPzPHPz2890일 전314

모든 응답(6)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-17 18:01:40

    인터페이스 컨트롤이 상위 컨트롤의 위치를 ​​초과합니다.
    self.view의 프레임 크기를 결정하고 addview의 프레임 크기를 확인한 다음 btn의 프레임 위치 크기를 보고 각 레이어가 self.view의 프레임 내에 있는지 확인하세요~

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 18:01:40

    예, addview가 범위를 벗어났고 애니메이션에 사용된 객체가 잘못되었습니다. 감사합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 18:01:40

    무엇을 쓰시려는지 모르겠지만 UIView *addView = [[UIView alloc] initWithFrame:CGRectMake(0, SCREENSIZE.height,SCREENSIZE.width, 80)]; 잘못 설정했다면 변경하고

    을 클릭하세요.

    회신하다
    0
  • PHPz

    PHPz2017-04-17 18:01:40

    UIView是需要添加交互效果的,默认是不能接到点击效果 클릭 효과를 허용하는 속성을 YES로 설정하면 완료됩니다

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 18:01:40

    상위 컨트롤의 범위를 벗어나거나 상위 컨트롤의 상호 작용이 허용되지 않습니다

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 18:01:40

    소통해야 한다면 방법이 있습니다

    1. 불규칙한 부모 보기 사용자 정의(이 질문을 어떻게 해야 할지 모르실 것 같은데요)

    2. 뷰의 터치 이벤트에서 상위 뷰를 기준으로 위치를 재정의

    회신하다
    0
  • 취소회신하다