响应来自滚动视图 ios 5 内 UIImageView 数组的事件

Posted

技术标签:

【中文标题】响应来自滚动视图 ios 5 内 UIImageView 数组的事件【英文标题】:Responding to events from an array of UIImageViews inside scrollview ios5 【发布时间】:2012-06-06 16:57:21 【问题描述】:

对于我的 iPad 应用程序,我正在以编程方式创建几个显示在屏幕上的 UIImage 视图。代码看起来基本上是这样的:

for(ModelObject *ModelsList 中的模型) //从模型对象创建一个 UIImage 视图 UIImageView *icon = [[UIImageView alloc] initWithFrame:model.icon_frame]; icon.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:model.icon_path ofType:@"png"]]; //将图像视图添加到可变数组以跟踪它们 [myImageViews addObject:icon]; // 将视图添加为子视图 [self.view addSubview:icon];

所以现在我在屏幕上显示了一堆图标。但我想从我以编程方式创建的UIImageViews 中截取触摸事件,以便它调用其他方法,最好使用包含发件人 id 的参数或可以用来确定哪个UIImageView 的其他区别信息感动。

实现此目的的最佳实践方式是什么?

我是 ios 新手,因此也非常感谢推荐阅读。

【问题讨论】:

【参考方案1】:

请提供任何适用的反馈,因为我不知道这是否是常见的做法,甚至是一种体面的做事方式......

所以基本上我所做的就是保留一个在视图对象和模型对象之间映射的 id 字典,然后查找发送视图的 id 并找到合适的模型对象,(然后我将使用该模型对象加载另一个视图)

代码如下:

// 在标题中 @property(非原子,保留)NSMutableDictionary *icons_to_models // 在创建了一个 UIButton 之后叫做 icon [图标 setBackgroundImage:model.image forState:UIControlStateNormal]; [icon addTarget:self action:@selector(tappedIcon:) forControlEvents:UIControlEventTouchUpInside]; NSNumber *key = [NSNumber numberWithUnsignedInt:[icon hash]]; [icons_to_models setObject:model forKey:key]; ... //将发件人与被按下的图标匹配 -(void)tappedIcon:(id)sender NSNumber *key = [NSNumber numberWithUnsignedInt:[sender hash]]; ModelObject *model = [icons_to_models objectForKey:key]; NSLog(@"点击:%@", model.name);

【讨论】:

以上是关于响应来自滚动视图 ios 5 内 UIImageView 数组的事件的主要内容,如果未能解决你的问题,请参考以下文章

表格单元格内的滚动视图内的自定义视图未响应事件

iOS 上的手势过滤

iOS 8 - 水平滚动视图中的按钮没有响应

滚动视图内的pageviewcontroller内的iOS tableview

IOS中水平滚动视图问题内的滑块

iOS嵌套的UIScrollViews没有响应