UIButton喜欢UIView的自定义子类上的行为

时间:2014-07-03 07:37:48

标签: ios objective-c uiview uibutton

我有UIView的子类

@interface TBL_CardView : UIView

它内部有卡片图像的UIImageView。

我需要按照以下方式处理卡片的触摸:

  1. 当我触摸(并且仍然保持)TBL_CardView时,我需要设置橙色borderColor。
  2. 如果我在TBL_CardView之上,我需要设置红色borderColor。
  3. 如果我不在TBL_CardView之上,我已经移动了手指,因为我想取消触摸,然后删除borderColor。
  4. 我知道如何处理borderColor的设置:

    self.layer.borderColor = [UIColor redColor].CGColor;
    self.layer.borderWidth = 3.0f;
    

    但我不知道实现瘦按钮行为的最简单方法是什么? 我应该只是按钮,还是使用UIResponder或其他东西? 每个案例的利弊是什么?

1 个答案:

答案 0 :(得分:2)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s", __PRETTY_FUNCTION__);

    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInView: self];
    BOOL isInside = [self pointInside: touchLocation withEvent: event];
    if (isInside)
    {
        //if logic
        NSLog(@"INSIDE");
    }
    else
    {
        //else logic
        NSLog(@"OUTSIDE");
    }
}

您可以查看此帖子,了解有关如何实现类似按钮的行为以及响应UIView或子类的触摸的信息。

Touch Event on UIView

然而,我自己通常做的是在我的alpha = 0.0之上放置一个透明的(清晰的颜色,没有标题,而不是UIButtonUIView,并且响应我需要的事件。检查它是否符合您的需求。