2012-05-10 75 views
2

我創建的自定義導航按鈕是這樣的:導航按鈕點擊之外

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:[UIImage imageNamed:@"some.png"] forState:UIControlStateNormal]; 
    .... 
    [[current navigationItem] setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:button]]; 

如果電流的UIViewController *類型。 所有的工作都很好,並且創建了按鈕,但是它是可按鈕外部的可點擊區域,非常接近導航欄的中間部分。是否可以限制可點擊區域?

+0

您的問題熟悉[本主題](http://stackoverflow.com/questions/9338681/issue-with-button-on-the-left-side-of-the-uinavigation-bar)。蘋果公司以這種方式使它易於使用 – dementiazz

回答

0

我最好的猜測是,該按鈕被設置爲居中圖像,而不是縮放它,所以按鈕的框架太大了。

button.frame=CGRectMake(x,y,w,h)

設置幀到你想要的可點擊區域是什麼。

+0

由於'UIBarButtonItem'不是'UIView',因此不具有'frame',所以不起作用。 –

5

我相信這是iOS的「特色」。左側和右側的導航按鈕小於iOS允許的最小觸摸區域。結果實際命中區域比物理導航按鈕大得多。包括在酒吧下方,就像你注意到按鈕的左側和右側。它允許快速觸摸,而不必「看」你觸摸的位置。它是iPhone早期比大多數Android手機更自然使用的關鍵原因之一。

0

我最初想到了繼承UIBarButtonItem並覆蓋-touchInside:

雖然這不起作用,因爲UIBarButtonItem不是UIView的子類。
因此,如果沒有重寫一些私有API,您試圖實現的目標是不可能的。

相關問題