標籤:blog http io os for sp div on 問題
高高興興迎接新的產品新需求,滿心歡喜的開始工作,結果研究了一下午才發現,是自己想的太簡單了,是我太單純呀。
需求是這樣的類似下雪的效果,隨機產生一些小雪花,然後每個雪花可以點擊到下個頁面。
接到需求之後我的首先想法就是用button實現不久可以了,多簡單點事情,結果實踐之後就知道自己多麼的無知了,在移動中的button根本沒有辦法接收點擊事件。
然後同事給出了一種解決辦法,通過手勢擷取點擊的位置,然後遍曆頁面上的控制項,如果在這個範圍內就點擊成功。通過這個想法我嘗試用frame來實現需求,然後發現自己又白癡了,頁面上所有的“雪花”的frame,都是動畫結束的位置,並不是即時的位置。
但是我感到用手勢,然後通過位置,遍曆,這個思路應該是對的,於是繼續百度,發現了一個好東西
- (CALayer *)hitTest:(CGPoint)p;
通過這個可以得到這個頁面時候覆蓋了這個點,這樣就可以解決我的問題了,把手勢加在“雪花”的父頁面上,然後點擊事件裡進行處理(當然 用這個方法就沒有必要一定用button)
-(void)tapClick:(UITapGestureRecognizer *)tap{ CGPoint clickPoint = [tap locationInView:self]; for (UIImageView *imageView in [self subviews]) { if ([imageView.layer.presentationLayer hitTest:clickPoint]) { // This button was hit whilst moving - do something with it here break; } } }}
這樣就可以解決問題,當然應該還有其他的方法,歡迎補充。
附贈幫我解決問題的資料連結
http://www.999dh.net/home.php?mod=space&uid=1&do=blog&id=410
http://stackoverflow.com/questions/8346100/uibutton-cant-be-touched-while-animated-with-uiview-animatewithduration
iOS 為移動中的UIView(UIButton )添加點擊事件