Swift2 触摸移动不';t在UIView中记录所有点(Swift实施)

Swift2 触摸移动不';t在UIView中记录所有点(Swift实施),swift2,Swift2,一般来说,我不熟悉编码。最近开始用Swift编码。 在一个简单的基于Swift的绘图应用程序中,我需要记录一组用户触摸屏幕和移动手指的点 我正在使用TouchsMoved在UIView中记录触摸位置。如果用户移动手指速度足够快,TouchsMoved不会记录所有点。如果手指移动缓慢,它会记录所有点。我在这个论坛上查看了之前关于这个的问题,但不知道如何实现这些问题。任何关于在哪里寻找答案的建议或方向都将受到高度赞赏 附件是我正在使用的代码 import UIKit class SketchView

一般来说,我不熟悉编码。最近开始用Swift编码。 在一个简单的基于Swift的绘图应用程序中,我需要记录一组用户触摸屏幕和移动手指的点

我正在使用TouchsMoved在UIView中记录触摸位置。如果用户移动手指速度足够快,TouchsMoved不会记录所有点。如果手指移动缓慢,它会记录所有点。我在这个论坛上查看了之前关于这个的问题,但不知道如何实现这些问题。任何关于在哪里寻找答案的建议或方向都将受到高度赞赏

附件是我正在使用的代码

import UIKit
class SketchView: UIView {

var lines = [Line]()
var lastPoint: CGPoint!            //this is to track last touch of the user


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    let touch = touches.first! as UITouch
    lastPoint = touch.locationInView(self)

}


override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {

    let touch = touches.first! as UITouch
    let newPoint = touch.locationInView(self)

    lines.append(Line(start: lastPoint, end: newPoint))
    lastPoint = newPoint

    self.setNeedsDisplay()

}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
    print(" Sketch points number is \(lines.count)")

}


override func drawRect(rect: CGRect) {

    let context = UIGraphicsGetCurrentContext()
    CGContextBeginPath(context)

    for line in lines {
        CGContextMoveToPoint(context, line.start.x, line.start.y)
        CGContextAddLineToPoint(context, line.end.x, line.end.y)

    }

    //CGContextSetLineCap(context, .Round)
    CGContextSetRGBStrokeColor(context, 0, 0, 0, 1)
    CGContextSetLineWidth(context, 5)
    CGContextStrokePath(context)

}



}
导入UIKit
类SketchView:UIView{
变量行=[Line]()
var lastPoint:CGPoint!//这是为了跟踪用户的最后一次触摸
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
让touch=touch.first!作为UITouch
lastPoint=触摸。位置查看(自)
}
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
让touch=touch.first!作为UITouch
让newPoint=touch.locationInView(self)
行。追加(行(起点:lastPoint,终点:newPoint))
lastPoint=newPoint
self.setNeedsDisplay()
}
覆盖func touchesEnded(触摸:设置,withEvent事件:UIEvent?){
打印(“草图点编号为\(lines.count)”)
}
重写func drawRect(rect:CGRect){
let context=UIGraphicsGetCurrentContext()
CGContextBeginPath(上下文)
排队{
CGContextMoveToPoint(上下文,line.start.x,line.start.y)
CGContextAddLineToPoint(上下文,line.end.x,line.end.y)
}
//CGContextSetLineCap(上下文,.Round)
CGContextSetRGBStrokeColor(上下文,0,0,0,1)
CGContextSetLineWidth(上下文,5)
CGContextStrokePath(上下文)
}
}
为了确认我的数组中缺少点,在下面的图像中,我显示了数组中存储的x坐标,用于屏幕上绘制的线a


谢谢。

如果上面的帖子不清楚,问题是如何存储用户在屏幕上移动手指时触摸到的所有点。ThanksHi Neeraj你能通过github或类似的东西来分享这个项目吗?这样我们就可以进行查看和调试了。您可以从这里下载代码Neeraj,它在我的系统中运行良好。看起来这不是代码问题,而是其他问题。Jeetendra,谢谢你的检查。当你说它很好用的时候。我猜你的意思是当你画画的时候你看到了一条连续的线?如果是,问题不是连续线,而是保存在“线”数组中的点。在TouchsMoved功能中记录触摸点的“线”数组不会保存扫描手指触摸的所有点。我们看到一条连续线,因为CG在“线”数组中的不连续点之间添加了所有类似项。我需要在lines数组中记录所有的触摸点,以便以后可以使用它们。如果在上面的帖子中不清楚,问题是如何在屏幕上存储用户移动手指时触摸到的所有点。ThanksHi Neeraj你能通过github或类似的东西来分享这个项目吗?这样我们就可以进行查看和调试了。您可以从这里下载代码Neeraj,它在我的系统中运行良好。看起来这不是代码问题,而是其他问题。Jeetendra,谢谢你的检查。当你说它很好用的时候。我猜你的意思是当你画画的时候你看到了一条连续的线?如果是,问题不是连续线,而是保存在“线”数组中的点。在TouchsMoved功能中记录触摸点的“线”数组不会保存扫描手指触摸的所有点。我们看到一条连续线,因为CG在“线”数组中的不连续点之间添加了所有类似项。我需要将所有接触点记录在lines数组中,以便以后可以使用它们。