小编Gur*_*ngh的帖子

如何检测可拖动线上的触摸(使用drawRect绘制)

致电所有专家!我见过各种帖子,说实话,我的需求与SO上的答案略有不同.

我想创建一个UI,用户可以在特定区域创建各种线条(直线,曲线,摆动等)(现在我们称之为"画布").每行可以有多个实例.然后,用户可以根据需要拖动和编辑这些行.因此,他们可以拉伸它,更改起点,终点等,甚至可以将整行拖动到画布的边界内.

我设法画线(使用drawRect)并在每一行的末尾显示可拖动的手柄(参见参考图像),用户可以在画布的边界(红色矩形)内拖动端点以满足需要.

在此输入图像描述

我面临的问题是如何点击以激活特定行的编辑.因此,默认情况下,拖动句柄将不可见,并且用户可以点击该行以激活"编辑"模式,然后显示句柄(再次点按以取消选择).因此,在上图中,我希望能够检测黄色矩形中的触摸.请记住,UIView边界是整个画布区域,允许用户自由拖动,因此检测触摸显然很困难,因为还有透明区域,并且每行可以有多个实例.

这是我的代码到目前为止的行类(startHandle和endHandle是每一端的句柄):

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint startPoint = CGPointMake(self.startHandle.frame.origin.x + self.startHandle.frame.size.width/2, self.startHandle.frame.origin.y + self.startHandle.frame.size.height/2);

    CGPoint endPoint = CGPointMake(self.endHandle.frame.origin.x + self.endHandle.frame.size.width/2, self.endHandle.frame.origin.y + self.endHandle.frame.size.height/2);

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];

    if (CGRectContainsPoint(CGRectMake(startPoint.x, startPoint.y, endPoint.x - startPoint.x , endPoint.y - startPoint.y), touchLocation))
    {
        //this is the green rectangle! I want the yellow one :)
        NSLog(@"TOUCHED IN HIT AREA");
    }
}

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c line drawrect ios8

9
推荐指数
1
解决办法
539
查看次数

Objective-C HealthKit可识别来自Apple iPhone或Apple Watch的来源

我有一个应用程序,我正在尝试集成HealthKit并使用HKStatisticsCollectionQuery提取白天汇总的步骤相关数据.要求是单独提取特定于iPhone和Apple Watch设备的步骤数据(无重复数据删除),这些数据对健康应用程序有所贡献.

HKSource类仅包含以下属性:

  • 名称 - 无法使用,因为用户可以将此更改为"XXXX iPhone"中的任何内容
  • bundleIdentifier - 为我们提供设备的UUID(每个设备唯一,每个iPhone/Watch都不同),它看起来像com.apple.health.UUID,这是Apple文档所说的:" 对于应用程序,此属性包含应用程序的软件包标识符.对于支持的蓝牙LE设备,此属性包含设备的UUID. "

我能够提取所有源码(使用HKSourceQuery),其中bundleIdentifier前缀为"com.apple.health",但我无法推断出哪个是Apple iPhone,哪个是Apple iWatch.

以前是否有人遇到类似的情况,有没有其他方法来确定哪个来源是iPhone或Apple Watch?

任何帮助都会很棒!谢谢!

iphone objective-c ios healthkit

5
推荐指数
1
解决办法
2731
查看次数

标签 统计

iphone ×2

objective-c ×2

drawrect ×1

healthkit ×1

ios ×1

ios8 ×1

line ×1