2012-02-25 24 views
2

在我的應用程序中,我允許用戶通過添加箭頭(自定義ArrowView)來對照片進行註釋。可以有很多箭增加,各種變焦&旋轉。如何在其父視圖的座標系統中獲得子視圖的有效邊界

我試圖通過觸摸屏實現箭頭的選擇。目前,我使用

CGRectContainsPoint(arrowView.frame, touchPoint) 

來決定選擇基於觸摸手勢,其箭頭迭代&。

但是,這不能很好地工作,當一些箭頭的是大&旋轉到45度(因爲幀變成大)。

問: 我想用翻譯成父座標,而不是框架箭頭的邊界。我怎麼能縮放&旋轉當應用得到這個?

或者,有沒有更好的方法來解決這個問題的選擇?

+0

*轉換爲母體座標的箭頭的範圍*是*幀的定義*。您能發佈比您發佈的行更多的代碼,以顯示您如何定義touchPoint嗎? – sch 2012-02-25 15:48:39

+0

但旋轉時框架變大,邊界保持不變。我想獲得應用旋轉的原始幀(即,矩形的邊可能不平行於父視圖幀的邊)。這就是我所說的「將箭的範圍翻譯成父母座標」的意思。 – Shameem 2012-02-25 15:54:56

回答

1

此代碼找到箭頭touchPoint下:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint touchPoint = [touch locationInView:self.view]; 
    UIView *arrow = [self.view hitTest:touchPoint withEvent:event]; 
} 
+0

sch,謝謝你的回答。不過,我正在使用'UITapGestureRecognizer'。是否有可能獲得與tapGesture相對應的'UIEvent'? – Shameem 2012-02-25 16:06:31

+0

你可以把'nil'代替。 – sch 2012-02-25 16:07:47

相關問題