微信空白朋友圈是怎么回事

自从今天下午院草发了一条空白朋友圈,便引来无数跟风者,许多人一边被刷屏,一边好奇这究竟是怎么发出来的。

院草先是误导大家这是个纯手速问题,于是我尝试了下自己的手速,发现完全跟不上

然后经过永盛大神指点,终于发出来了:

于是各路豪杰争先恐后的开始发空白朋友圈

其中不乏不忘装个逼的邹哲鹏

当然也有不明真相的广东省武术冠军,受院草蛊惑,真的怀疑自己手速有问题😂

经过我的研究,其实这不是微信的问题

一开始我猜想微信应该是用了苹果标准的开发方法,在navigationController里面添加了一个barButton,然后使用了Xcode自动创建的按钮点击事件。

于是我自己写了一个DEMO,其中写了类似于微信的判断,当没有输入文字的时候禁用barButton。所以没有文字的时候是绝对无法点击按钮显示消息的。

果然,跟微信一样,输入一个字母,按住发送键,然后再删除那个字母,松开发送键,消息还是显示了!!说明我的猜想应该是对的~~

当然这也不能怪微信,毕竟这是苹果自动创建的方法,谁写都是这样的。没有设计师会考虑到可以用这种方法发送空白消息,也不知道是谁闲的蛋疼发现的这个问题。(当然,不可能是院草李八千,因为他忙着泡妞不会闲)

那么有没有办法防止发送空白消息呢?

答案是有的,不然我也不会那么晚来写这篇文章了……

大概思路就是重写苹果的点击事件。一个点击事件对应一对touchDowntouchUp事件,分别代表手指按下去的状态和手指离开屏幕的状态。我们要做的就是只要手指按下去就立即发送信息,这样无论那人手速有多快都不可能发送空白消息了!!

但是navigationController的专用控件UIBarButton没有判断Button状态的函数,所以只能用Button代替BarButton。然后重写点击方法

1
2
3
4
5
6
7
8
9
10
11
//swift
override func viewDidLoad() {
……………
Button.addTarget(self, action: "touchDownAction", forControlEvents: UIControlEvents.TouchDown)
…………
…………
}
func touchDownAction(){
//按钮按下时的动作
}

效果:

代码下载(swift1.2 Xcode6.4)

后来借了台安卓机,发现貌似安卓不能发这个,好像每次删除了字符就会刷新button的状态。至于IOS为什么会这样也只是我猜的,是不是真的要看IOS源码才知道,所以一切真相只能等到IOS开源了~