2012-08-07 121 views
2

我在UIScrollView上放置了一些CTFrame文本列,並且我做出了一個選擇工具來選擇和突出顯示文本,如下圖所示。Core Text上的可點擊區域CTFrame

我希望能夠點擊選擇,所以矩形是50%不透明度的UIButton,通過CTFrame。

問題如下:出於某種原因,按鈕TouchUpInside事件沒有被觸發,我認爲如果突出顯示放置在CTFrame的低音部分,它會有更好的效果,但我認爲按鈕不會收到事件。

任何想法來解決這個問題,即有一個選擇標記下面的文本和可點擊?


這裏的文本高亮顯示例子:

Text selection over CTFrame

回答

2

你怎麼把你放在CTFrames到的UIScrollView? CTFrame不是UIView子類。你在哪裏畫? 還檢查你的UIScroll view'a內容大小。

使用UIButtons不是一個好主意,最好是直接用Core Graphics繪製它。 觸摸應該處理UIView本身,然後翻譯成適當的文本。 使用CTFrameGetLineOrigins()找到正確的行(通過檢查Y起點),然後使用CTLineGetStringIndexForPosition()在行內找到正確的字符(從點減去行起點後)。

+0

你是對的,我把CTFrames放在UIView上,然後放在UIScrollView上的UIView。內容大小是正確的。我正確地從第一個文本列滾動到最後一個文本列沒有問題。 – javsmo 2012-08-07 14:05:58

+0

我喜歡你的解決方案來繪製突出顯示的矩形,因爲我正在使用按鈕,並使用我繪製突出顯示時保存的矩形測試觸摸位置。我會嘗試這個想法。 – javsmo 2012-08-07 14:09:08

0

我覺得你可以使用輕敲手勢識別器,當點擊時,只是檢查點擊點是否在你突出顯示的部分的矩形中。我認爲輕拍手勢識別器與UIScrollView一起工作(不像其他手勢)。