如何为heatmap.js添加点击事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为heatmap.js添加点击事件相关的知识,希望对你有一定的参考价值。
参考技术A 下载zip文件,并解压文件,获取路径。生成一个div用于渲染。
h337.create()创建对象,使用containter:指定容器,生成heatmapformat数据data,使用setData()函数设置数据。
实例一:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div
width:600px; height:400px;border: 1px solid;border-color: grey;
</style>
</head>
<body>
<div id="heatmap"></div>
</body>
<script src="C:\Users\jyjh\Desktop\heatmap.js-2.0.5\heatmap.js-2.0.5\build\heatmap.js"></script>
<script type="text/javascript">
var heatmapInstance = h337.create(
container: document.querySelector('#heatmap'),
);
var points = [];
var max = 0;
var width = 600;
var height = 400;
var len = 20;
while (len--)
var val = Math.floor(Math.random()*100);
max = Math.max(max, val);
var point =
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val
;
points.push(point);
var data =
max: max,
data: points
;
heatmapInstance.setData(data);
</script>
</html>
实例二:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div
width:600px; height:400px;border: 1px solid;border-color: grey;
</style>
</head>
<body>
<div id="heatmap">
</div>
</body>
<script src="C:\Users\jyjh\Desktop\heatmap.js-2.0.5\heatmap.js-2.0.5\build\heatmap.js"></script>
<script type="text/javascript">
var heatmapInstance = h337.create(
container: document.querySelector('#heatmap'),
backgroundColor: 'rgba(0,0,0,.95)',
gradient:
'.5': 'blue',
'.8': 'red',
'.95': 'white'
,
maxOpacity: .9,
minOpacity: .3
);
var points = [];
var max = 0;
var width = 840;
var height = 400;
var len = 300;
while (len--)
var val = Math.floor(Math.random()*100);
var radius = Math.floor(Math.random()*70);
max = Math.max(max, val);
var point =
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val,
radius: radius
;
points.push(point);
var data =
max: max,
data: points
;
heatmapInstance.setData(data);
</script>
</html>
如何为自定义 uicontrol 和控制器添加触摸事件?
【中文标题】如何为自定义 uicontrol 和控制器添加触摸事件?【英文标题】:How to add touch event for custom uicontrol and controller? 【发布时间】:2017-09-10 21:50:51 【问题描述】:我有一个具有三个子视图的自定义 UIControl。每个子视图,我添加一个目标:
button.addTarget(self, action: #selector(buttonTapped(clickedBtn:)), for: .touchUpInside)
在那个函数buttonTapped
中,它会做一些特殊的动画来做一些过渡(它模仿分段控制)。
现在,在这个自定义 UIControl 所在的 ViewController 中,必须知道它何时被触摸。我为自定义 UIControl 创建了一个与触摸事件交互的 @IBAction
函数。
问题是,这是不可能的(据我所知)。如果我将目标触摸事件添加到子视图,则不会调用父触摸事件。要让父视图调用@IBAction
函数,我必须设置所有子视图的 setUserInteractiveEnabledto
true`。当我这样做时,不会调用子视图的触摸事件函数。
我需要调用两个触摸事件函数。我怎样才能做到这一点?或者解决这个问题的最佳方法是什么?
【问题讨论】:
能否将整个自定义控件设为IBAction
,然后在.touchUpInside
中确定哪个子视图被点击了?
【参考方案1】:
使用委托,在 UIControl 中添加一个需要在 ViewController 中实现的协议。
通过这种方式,您可以检测是否单击了 UIControl 中的按钮并调用 VC 中的特定函数。
例如:
//YourUIControl.Swift
protocol YourUIControlDelegate
func didTapFirstButton()
class YourUiControl : UIView //I'm assuming you create your UIControl from UIView
var delegate : YourUIControlDelegate?
//other codes here
.
.
.
@IBAction func tapFirstButton(_ sender: AnyObject)
if let d = self.delegate
d.didTapFirstButton()
//YourViewController.Swift
extension YourViewController : UIControlDelegate
func didTapFirstButton()
//handle first button tap here
【讨论】:
成功了!我唯一需要添加的是在YourViewController
中,在viewDidLoad
中,您需要将YourUIControl
委托设置为self。以上是关于如何为heatmap.js添加点击事件的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Event Tracking Activecampaign 跟踪事件