iOS 為移動中的UIView(UIButton )添加點擊事件

來源:互聯網
上載者:User

標籤: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 )添加點擊事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.