2014-07-21 67 views
6

我正在爲Swift編寫iOS 8的自定義鍵盤擴展,並且在實現Swype樣式的塗鴉覆蓋時遇到了問題。現在,我的鍵盤具有一個基於UIView(我的UIInputViewControllerview屬性),其中的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

回答

0

我在這裏猜測,因爲我沒有嘗試使用UIInputViewControllers呢。但是,如何繼承UIButton,然後重寫touchesBegan:withEvent:touchesEnded:withEvent:方法以將這些事件轉發到您的UIInputViewController?

+0

絕對是一個選項,但我不確定這將如何與我附加到每個按鈕的手勢識別器一起使用。值得嘗試,如果沒有人想到更聰明的東西。 – Kamaros

+0

由於您正在獲取按鈕之間的塗鴉(而不是按鈕),這不僅僅是一個視圖層次結構的問題嗎?我的意思是,你不是在按鈕本身下面繪畫嗎?再次,這只是一個猜測,因爲我沒有訪問你的代碼。另外,如果你遇到了問題,你總是可以把一個空的UIView放在所有按鈕的上面,然後繪製它,而不是繪製你現在正在繪製的任何地方。 –

0

我認爲你需要設置你的ScribbleView interationEnabled爲YES並且轉發到你不想要的touchEvents下面的按鈕。例如,如果您在相同的地點或輕敲中識別出長按,則您知道用戶想要按下按鈕。

相關問題