使用 CGPoint 追踪长按手势的确切位置

2023-12-15

通过使用 CGPoint 位置,它始终保存 uiscrollview 中的最后一个图像。当我点击其他图像进行保存时。我该怎么做才能保存我点击的确切图像。

UIScrollView *imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
imageScrollView.pagingEnabled = YES;

NSInteger numberOfViews = 61;

for (int i = 0; i < numberOfViews; i++) {

    CGFloat xOrigin = i * self.view.frame.size.width;

 NSString *imageName = [NSString stringWithFormat:@"image%d.png", i];

    _image = [UIImage imageNamed:imageName];

    _imageView = [[UIImageView alloc] initWithImage:_image];

    _imageView.frame = CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height);

 UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc]
                                                       initWithTarget:self
                                                       action:@selector(handleLongPress:)];

    imageScrollView.userInteractionEnabled = YES;
    [imageScrollView addGestureRecognizer:gestureRecognizer];
    gestureRecognizer.delegate = self;
    [gestureRecognizer release];

    [imageScrollView addSubview:_imageView];
imageScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);

    - (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan){
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Save Photo", nil];
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
    [actionSheet showInView:self.view];
    [actionSheet release];

     }}

 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

switch (buttonIndex) {
    case 0:
        [self savePhoto];

       break;

    default:
        break;

}

   -(void)savePhoto{

CGPoint location = [gesture locationInView:_imageView];

if  (CGRectContainsPoint(_imageView.bounds, location)){

UIImageWriteToSavedPhotosAlbum(_image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);
   }}}

任何想法将不胜感激。

Thanks


该点将始终出现在范围内UIScrollView其中LongPressGestureRecognizer被触发。你应该检查你的滚动视图contentOffset (use contentOffset.x对于水平布局和contentOffset.y对于垂直布局)来检测您应该保存哪个图像。

此外,您还可以将触摸点转换为UIImageView实例的局部坐标系并查看该点是否位于图像视图的范围内bounds rect.

UPDATE

例如,您可以使用类似的方法来检测该点是否在图像视图的边界内(注意:我有not测试了这一点,这是假设有多个图像视图添加到滚动视图中):

if (CGRectContainsPoint(_imageView.bounds, [self.view convertPoint:location toView:_imageView]))
{
    // do something
}

您还应该考虑检测之前应保存哪个图像,并在显示之前存储对该图像的引用UIActionSheet对用户来说,因为它可能会减少您可能遇到的潜在问题的数量,并且以后更容易阅读,但这是我的主观意见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CGPoint 追踪长按手势的确切位置 的相关文章

  • 设置属性文本后防止 UILabel 字体自动更改

    我发现如果我将属性文本设置为UILabel 预定义字体将更改为属性文本第一个字符的字体 例如 the font size is set to 20 in Interface Builder println theLabel font poi
  • UIScrollView setContentOffset:动画:不起作用

    我有两个无限的 UIScrollViews 的问题 它们没有正确改变它们的偏移量 第一个 UIScrollView 中的项目与第二个 UIScrollView 中的另一个项目相对应 然后 我想将单击的项目放在第二位 并为两个 UIScrol
  • 保存一页数据并将该数据添加到 tableView

    大家好 我有 2 个视图 第一个有 UITableView 第二个有一个文本字段 当用户按下第二页上的 保存 按钮时 我希望将文本字段文本添加到 tableView 中 这是我正在使用的代码 IBAction saveButton id s
  • ng-submit 和 ng-click 在 ionic iPhone 应用程序中多次触发

    我正在尝试离子框架 它看起来非常好 但是 我在提交表单时遇到问题 表单触发两次 首先是按下提交按钮时 然后是点击屏幕上的任意位置 这种情况在 xcode 模拟器和我的 iphone 4gs 上都会发生 这就是我所做的 我使用以下命令安装侧菜
  • 将文件上传到 Google 云端硬盘时出错

    我已经在我的应用程序项目中实现了 Google Drive SDK 并尝试在 Google Drive 中上传图像 但出现错误 我的代码来自Here https developers google com drive quickstart
  • 获取 UIView 的视图控制器(iphone)

    我这样做是为了获得视图 self superview viewWithTag 10 但我怎样才能获得该视图的视图控制器 就像您可以获得视图控制器的视图一样 我想采用另一种方式 以便我可以向该视图控制器发送消息 调用方法 例如 self su
  • 外观代理 - iOS 5 的 setShadowImage 替代品?

    您好 我正在使用此代码来设置导航栏的阴影图像 if self navigationController navigationBar respondsToSelector selector shadowImage UINavigationBa
  • iPhone应用程序中可以使用什么来代替工具提示?

    iPhone应用程序中可以使用什么来代替工具提示 触摸屏系统中工具提示的最佳替代品 工具提示通常是为具有光标的操作系统保留的 在触摸屏应用程序中 根本不需要工具提示 当您的应用程序在使用时 用户应该始终知道菜单在哪里 所有按钮的用途等等 因
  • Monotouch如何管理资源(字符串、图像等)?

    在 Android 中 我将应用程序字符串放入名为的文件中strings xml 例如 对于意大利语翻译 我需要创建一个 value it 文件夹并放入strings xml在此新文件夹中包含带有意大利语标签的文件 Monotouch 如何
  • 保留“自我”的坏做法?

    我有一个简单的疑问 希望有人能解答 保留自我是不好的做法吗 我有一个想要创建的服务器请求对象 我希望能够通过以下方式使用它 ARequest request ARequest request someParam request delega
  • Xcode 5 - clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)

    I am facing a linker error when running my source code I have attached a screenshot also I am new in iOS development and
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • 如何在 Objective C 中创建 json 字符串?

    我必须动态生成一个 json 字符串并需要发送到服务器 有谁知道如何使用NSJSONSerialization 下面是我的字符串 surveyid Survey1 responsetime dd mm yyyy hh mm ss locat
  • 我们可以在 Objective-C 中创建可空/非空属性吗?

    我们可以在 Objective C 中创建可空 非空属性吗 如果可以 那么如何创建 您可以使用 Nullable and Nonnull预选赛 property copy nullable NSString name property co
  • iPhone 上的摇动视觉效果(不是摇动设备)

    在登录失败时 我宁愿避免显示警报 它太短暂了 显示警报 然后在登录屏幕上的某处显示文本似乎是重复的 因此 当用户输入错误的用户 ID 和密码时 我希望它能像 Mac 登录屏幕那样以图形方式摇动我的登录视图 有人知道是否有办法实现这一点 或者
  • 在iphone中缩放后保留标签的分辨率

    我在视图中有一个标签 缩放视图后 标签看起来有点模糊 分辨率丢失 如何在缩放后保留分辨率 这是我的缩放代码 secondView transform CGAffineTransformIdentity UIView beginAnimati
  • 使用NSString的drawAtPoint方法代替CGContextShowGlyphsAtPoint问题

    在我的应用程序中 我试图沿着路径渲染文本 这对于大多数字符来说都很好 但对于日语 或任何非 Mac Roman 就不行了 建议我使用 NSString drawAtPoint 它在我的 CATiledLayer 中显示正确的字符 然而 它们
  • iPhone/iPad 应用程序介绍

    我的应用程序的 iPhone 版本支持UIDeviceOrientationPortraitUpsideDown and UIDeviceOrientationPortrait 但 iPad 版本支持所有方向 在我的视图控制器中我有这个 B
  • 在 iphone safari 浏览器中禁用浏览或选择文件按钮

    我想知道为什么select file or choose file在 iphone safari 中查看网页时 该按钮被禁用 谁能告诉我为什么会发生这种情况有什么方法可以启用它吗 谢谢 因为您无法从 iPhone 上传文件
  • -[MyClassName copyWithZone:] 无法识别的选择器发送到实例

    我的应用程序崩溃了 原因是 MyClassName copyWithZone 无法识别的选择器发送到实例 我有两节课 假设 Class1 和 Class2 Class1 看起来像 Class1 h interface Class1 NSOb

随机推荐

  • flutter:参数格式不正确

    我是 Flutter 新手 今天我一直遇到一个问题 我无法调试我的应用程序 因为它说参数格式不正确 Parameter format not correct FAILURE Build failed with an exception Wh
  • httpurlconnection线程安全

    HttpUrlConnection 线程安全吗 IE 如果我有一个连接到服务器的 HttpConnection 实例 并且该实例由不同的线程使用 例如尝试同时发送 POST HttpUrlConnection 将如何处理这种情况 a 他们会
  • 如何将表格包裹在链接中?

    哪些元素允许链接 我想要wrap围绕 a 的链接table a href 123 php class grap table border 1 style width 600px height 600px tbody tr td align
  • MongoDB节点检查objectid是否有效

    如何使用 Node 的驱动程序检查 ObjectID 是否有效 我试过 var BSON mongo BSONPure console log Validity BSON ObjectID isValid ddsd 但我不断收到异常 而不是
  • select() 没有响应 /dev/input/mice 上的写入

    我正在编写一个程序来监视select 键盘和鼠标设备文件 它等待这些文件上的任何写入操作 这应该在有击键或鼠标移动时发生 并且一旦有写入操作 就会执行一些作业 但这不起作用 我的代码如下 include
  • 如何在 Xcode 8 中使用 Swift 3 创建 ManagedObjectContext?

    尝试在视图控制器中创建新上下文时 在新的 Xcode 8 使用 Swift 3 iOS 10 中遇到问题 AppDelegate 类型的值没有成员 managementObjectContext let context UIApplicat
  • 如何将 HTML 字符串注入到元素中?

    使用 Mootools 我们可以将一个元素注入另一个元素 childID inject parentID top 第二个参数允许我控制位置 可以是 顶部 或 底部 以将其注入到父对象中 也可以是 之前 或 之后 以将其作为同级对象注入 我们
  • 将两种表单中的数据作为 Angular 中的一个对象发布

    这是我在 Angular 上的第一个项目 我已经尽我所能 我会尝试自己完成它 但我觉得我需要帮助 项目简介 我有课mod ts export interface Mod id number name string clauseList Cl
  • 带分散聚集的 MPI 矩阵乘法

    我正在尝试使用 C 中的 MPI 进行矩阵乘法 我们必须做一个顺序版本和一个并行版本 我的并行版本没有给出正确的答案 我不知道为什么 我认为我没有向进程发送正确的通信 但我不能确定 教授只是回顾了不同的发送 接收 收集等消息 但并没有真正深
  • USB 设备的 SetupComm、SetCommState、SetCommTimeouts 失败

    我正在打开一个 USB 设备 用于通信使用CreateFile HANDLE hUsb CreateFile LCLD9 GENERIC READ GENERIC WRITE 0 null OPEN EXISTING FILE FLAG O
  • UITableViewCell 阴影

    我正在尝试实现这个设计 但我浏览过的所有解决方案都不起作用 据我了解 这可能是因为单元格和 UITableView 之间的间距所致 设计如下 所以基本上我想要实现的是从所有 4 个侧面都有阴影以及每个单元格和下一个单元格之间的一些间距 谢谢
  • 与 Surefire 并行运行测试并使用 TestNG Jenkins 插件正确显示它们

    我正在使用 Surefire 运行并行执行测试 一切似乎都工作正常 但是 在 target surefire reports 文件夹中只生成了一个 testng results xml 其中 仅包含最后运行的测试的结果 我发现了一个与旧版本
  • Cortana 技能不适用于 Windows 10 或 iOS

    我使用 Microsoft Bot Framework 添加了 Cortana 技能 我的召唤短语是 我的技能 当我尝试在 iOS 或 Windows 中与 Cortana 交谈时 它不会调用该技能 相反 它一直引导我访问 Bing 结果
  • PHP 函数使用 scrape 方法抓取远程站点上

    有人有一个 PHP 函数可以抓取远程站点上特定 DIV 内的所有链接吗 所以用法可能是 links grab links url divname 并返回一个我可以使用的数组 抓取链接我可以弄清楚但不知道如何让它只在特定的 div 内执行 谢
  • Visual Studio 中 KeyDown 事件、KeyPress 事件和 KeyUp 事件之间的区别

    谁能告诉我两者之间的区别KeyDown事件 KeyPress事件和KeyUp事件 我查了msdn网站 没有太多解释 谁能用简单的逻辑意义告诉我每个事件发生的时间 我感觉上述所有事件都是在按下某个键时发生的 那么它们之间的具体区别是什么呢 M
  • 以不同颜色显示 R 热图异常值

    希望用不同的颜色标记 R 矩阵中的异常值 假设我的数据为 1 2 4 2 5 5 4 3 2 3 1 500 5 4 2 现在我想用不同的颜色标记 500 用热图的默认颜色标记矩阵的其余部分 有人可以指导我完成整个过程吗 这是实现这一目标的
  • 如何在 javascript 和/或 css 中向下滚动时水平移动 div

    有谁知道我怎样才能获得像本网站底部那样的轮播效果https brand twitch tv 我使用了在 codepen 中找到的这个示例来了解本节的结构 但是当尝试使用垂直滚动将其添加到我的网站时 它不是像 twitch 网站中那样的连续滚
  • TypeScript 接口实现不检查方法参数

    interface IConverter convert value number string class Converter implements IConverter convert string no error return co
  • Heroku Node.js 应用程序“进程已退出,状态为 1”和错误 h10

    我将我的应用程序部署到 Heroku 上 没有任何问题 我能够跑heroku local web在 localhost 5000 上并且它有效 当我访问 web dyno 地址时 它说应用程序错误 我检查了该网站的日志 上面写着 2017
  • 使用 CGPoint 追踪长按手势的确切位置

    通过使用 CGPoint 位置 它始终保存 uiscrollview 中的最后一个图像 当我点击其他图像进行保存时 我该怎么做才能保存我点击的确切图像 UIScrollView imageScrollView UIScrollView al