touchesBegan等方法不执行

今天写了一个自定义控件继承于UILabel,想要在上面添加点击事件,用touchesBegan等一系列方法实现,程序跑起来自信满满,突然发现程序不执行该方法,找了半天,了解到貌似touch事件只能被UIView捕获,然后把label的用户交互开启了(发现UIImageView和UILabel的交互默认是关闭的),就能让下面的view捕获到touch事件了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用iOS中的`UIPanGestureRecognizer`手势来实现可移动改变尺寸的`UIView`。这个手势可以让用户拖动视图并改变其大小。 首先,你需要创建一个`UIView`实例并将`UIPanGestureRecognizer`手势添加到该视图上。然后,你需要实现手势处理程序方法来处理拖动手势。 以下是一个简单的示例代码,展示如何实现可移动改变尺寸的`UIView`: ```swift class ResizableView: UIView { var lastLocation = CGPoint.zero override init(frame: CGRect) { super.init(frame: frame) let panGesture = UIPanGestureRecognizer(target: self, action: #selector(draggedView(_:))) self.gestureRecognizers = [panGesture] } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) let panGesture = UIPanGestureRecognizer(target: self, action: #selector(draggedView(_:))) self.gestureRecognizers = [panGesture] } @objc func draggedView(_ sender: UIPanGestureRecognizer) { guard let superview = self.superview else { return } let translation = sender.translation(in: superview) self.center = CGPoint(x: lastLocation.x + translation.x, y: lastLocation.y + translation.y) if sender.state == .ended { lastLocation = self.center } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.superview?.bringSubviewToFront(self) lastLocation = self.center } } ``` 这个`ResizableView`类创建了一个可以移动和改变尺寸的`UIView`。当用户拖动手势时,`draggedView`方法将被调用来移动视图。你还可以在`touchesBegan`方法中实现将视图置于最前面。 你可以使用这个示例代码作为起点,并根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值