你問:
我可以實現手勢識別器,從UISwipeGestureRecognizer
繼承並添加邏輯來處理UIEvent
?
是的。請參閱iOS事件處理指南中的Creating a Custom Gesture Recognizer。另請參閱WWDC 2010 session 121 - Advanced Gesture Recognition。不過,這可能取決於您想要執行的操作,並且您應該通過配置標準滑動手勢的direction
和numberOfTouches
參數來查看是否可以完成所需的操作。我已經在像UIPanGestureRecognizer
這樣的連續手勢上做了更多的子類化,但我沒有看到爲什麼你無法通過滑動來做到這一點。
我可以執行UIGestureRecognizer
而不附加到UIView
嗎?意思是,我將分析和管理UIEvent
事件並調用正確的選擇器(touchesBegan
,touchesMoved
,touchesEnded
,touchesCancelled
)?
號很明顯,你可以創建一個,但它直到它添加到UIView
和視圖接收觸摸只是將不會收到任何事件。
與此同時,當狀態爲UIGestureRecognizerStateEnded
時,重置手勢識別器時出現問題。
您必須提交一個新問題,爲我們提供相關的代碼片段以幫助您解決問題。一般來說,當您的處理程序被呼叫UIGestureRecognizerStateEnded
(和UIGestureRecognizerStateCancelled
或UIGestureRecognizerStateFailed
)時,您會執行任何手勢後清理,並且當您收到下一個UIGestureRecognizerStateBegan
時,您將爲下一個手勢初始化所有內容。
來源
2013-02-05 16:34:56
Rob
感謝您的快速響應。關於第二個問題,正如我所提到的,我通過調整UIApplication sendEvent來管理UIEvents:然後將UIEvents轉發給未連接到任何UIView的識別器。而且看起來它是第一次運作,但是這個狀態並沒有停止,所以其他事件都失敗了。任何想法? – Amir
@Amir沒有看到代碼就很難說。但我必須承認,我並不是一個狂熱的粉絲,因爲看起來意想不到的後果的規律往往會發揮作用。但是,也許用你的混合代碼來創建一個新問題,看看有沒有人有想法(並且支持自己的反火焰火焰;儘管如此)。我能問你想達到什麼嗎? – Rob
@Amir我不得不懷疑,UIKit是否將手勢狀態恢復爲可能的處理在某種程度上取決於它被掛鉤到UIView。我真的不知道。這是我以前從未考慮過的內部實現問題。但是關於S.O.的偉大之處是通常有人花了很多時間思考同樣的問題,你可能會摔跤...... – Rob