ios - 跟踪 UIView 中的 TouchUpInside 事件

标签 ios swift

我遇到了这个问题,据我所知没有解决方案。解决方案必须满足 2 个要求:
1. 捕获 TouchUpInside 事件,而不是 TouchUpOutside。我需要在手指触摸屏幕时立即采取行动,而不是在抬起屏幕时立即采取行动。
2.我需要手指的位置。这就是为什么我使用 UIView - 整个屏幕是一个目标。

我试过了:
1. 将我的 UIViewController 设置为 UITapGestureRecognizer 的委托(delegate)。函数 gestureRecognizer:shouldReceiveTouch: 有效,但 locationOfTouch:inView: 始终返回左上角点作为触摸位置。
2. 将 UIView 转换为 UIControl 并调用 addTarget:action:forControlEvents: 也可以,但不返回位置。
3. 子类化 UIGestureRecognizer。我试过了,但没有用,因为我不知道如何覆盖 touchesBegan:WithEvent:

我觉得自定义手势是唯一的方法,你能给我看一下手册或示例代码吗?或者其他解决方案?感谢您的阅读。

最佳答案

UIPanGestureRecognizer

您可以使用 UIPanGestureRecognizer 来捕获事件。

将手势添加到您的 View 。

//Method to call for your gesture.
self.panRecognizer = UIPanGestureRecognizer(target: self, action: "panView:")

//Set delegate of Gesture
self.panRecognizer.delegate = self

//Add Gesture to the UIView
self.view.addGestureRecognizer(self.panRecognizer)

跟踪用户事件。

//Capture Gesture
func panView(recognizer: UIPanGestureRecognizer){
    switch recognizer.state {
    case UIGestureRecognizerState.Began: break
    case UIGestureRecognizerState.Changed: break
    case UIGestureRecognizerState.Ended: break
    default:
        break
    }
}

touchesBegan:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    //Get Touch Point
    let Point = touches.first!.locationInView(self.view)
}

关于ios - 跟踪 UIView 中的 TouchUpInside 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488320/

相关文章:

ios - 图像 Assets 在 iOS 中无法正常工作 [大问题]

ios - 调整大小后 UITableViewCell 中的 UIImageView 分辨率低

ios - 删除 Parse-server 上的 PFFile,实际文件系统正在填满(长期计划切换到 S3)

Swift 和 Realm : getting Thread 1: signal SIGABRT when add objects in list

ios - 当 BLE 设备中的值更改时如何更新 BatteryLevel

ios - Swift 中 NSLayoutContraint 的简单用法?

ios - XLPagerTabStrip 按钮栏宽度比导航栏宽

android - Firebase Cloud Messaging 为一个主题订阅多个 token

ios - 让UIStepper增加5

ios - 使用具有固定宽度和可变高度的 PHImageManager 时的低分辨率图像