2012-10-12 40 views
3

我正在嘗試減少UIButton的觸摸面積。這甚至有可能嗎?當用戶觸摸按鈕並將觸摸拖到按鈕外部時,觸摸事件應該在按鈕圖形結束時立即停止。不幸的是該區域比實際的圖形大得多。我發現了很多關於如何增加面積的事情,但沒有找到如何縮小面積的方法。減少UIButton的觸摸面積

感謝您的幫助。

+0

爲什麼不改變按鈕的大小以匹配圖形的大小? – barley

+0

@barley我認爲他想說的是,即使按鈕和圖形大小相同,當您單擊按鈕並向外拖動時,按鈕不會被壓低,直到您離開一定距離。他希望馬上降下來。 – yuf

+0

@yuf感謝您的解釋。這聽起來像一個有趣的挑戰:) – barley

回答

1

我想出了一個解決方案。您可以繼承UIButton並覆蓋touchesMoved:,以便它可以識別觸摸在按鈕外部時會結束。這是我的片段。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch * touch = [touches anyObject]; 
    CGPoint touchPoint = [touch locationInView:self]; 

    if(!CGRectContainsPoint(self.bounds, touchPoint)) 
    { 
     [super touchesEnded:touches withEvent:event]; 
    } 
    else 
    { 
     [super touchesMoved:touches withEvent:event]; 
    } 
} 

這樣做的缺點是,如果您離開按鈕並再次返回,按鈕將不會激活。但除此之外,我認爲它應該可以正常工作。

+0

謝謝。這有幫助。 – palme