我正在爲Swift編寫iOS 8的自定義鍵盤擴展,並且在實現Swype樣式的塗鴉覆蓋時遇到了問題。現在,我的鍵盤具有一個基於UIView
(我的UIInputViewController
的view
屬性),其中的UIButtons
對應於鍵盤上的按鍵。這些鍵中的每一個都響應touchUpInside
事件,並且有UISwipeGestureRecognizers
這些鍵在向上或向下滑動時輸入輔助字符。我已覆蓋touchesBegan:withEvent:
,將我的塗鴉疊加視圖添加爲子視圖,並使用touchesEnded:withEvent:
刪除我的UIInputViewController
中的自由曲線疊加視圖。我如何有條件地攔截觸摸事件?
當前,如果我嘗試從某些按鈕之間的間距開始塗抹,則塗抹疊加視圖會正確顯示。但是,如果我從UIButton
開始塗鴉,則UIButton
會捕獲觸摸事件,並且不會將其轉發到我的UIInputViewController
。
我該如何實現我的鍵盤,使得如果用戶在按鈕之間塗鴉,然後處理按鈕按下/滑動,我的塗鴉覆蓋視圖就會出現?
- 編輯 -
我已經嘗試通過重寫touchesBegan/Moved/Ended/Cancelled
方法事件轉發到下一個響應者,以解決這個問題。如果我點擊一個按鈕然後點擊另一個按鈕,我可以在兩者之間出現塗鴉。但是,我仍然無法在按鈕上繪製任何東西來作爲按鈕之間的塗鴉。任何人有更好的主意?
--edit#2--
目前,我的看法層次設置如下: UIView
(從UIInputViewController
) 子視圖:我所有的按鈕,然後我ScribbleView
覆蓋的子視圖。
如果我在我的ScribbleView
上將userInteractionEnabled
設置爲true,我可以在任何地方塗寫,不管起始位置如何,但是隨後我失去了按鈕功能。對於源代碼,我一直在嘗試各種觸摸事件的配置以及什麼,但代碼的主體可以在這裏找到:https://github.com/Kamaros/ELDeveloperKeyboard。
絕對是一個選項,但我不確定這將如何與我附加到每個按鈕的手勢識別器一起使用。值得嘗試,如果沒有人想到更聰明的東西。 – Kamaros
由於您正在獲取按鈕之間的塗鴉(而不是按鈕),這不僅僅是一個視圖層次結構的問題嗎?我的意思是,你不是在按鈕本身下面繪畫嗎?再次,這只是一個猜測,因爲我沒有訪問你的代碼。另外,如果你遇到了問題,你總是可以把一個空的UIView放在所有按鈕的上面,然後繪製它,而不是繪製你現在正在繪製的任何地方。 –