2011-06-11 49 views
0

我想弄清楚如何做一些或許稍微不標準的事情。我有一個視圖控制器(UIViewController),它有1個UITextField和3個UIButton。我基本上使用UIButtons作爲切換;一次只能選擇1個。所以,每個人都有:當UITextField是第一響應者時,UIButton仍然可選擇嗎?

[myButton1 addTarget:self action:@selector(buttonPushed:) 
    forControlEvents:UIControlEventTouchUpInside]; 

,我這樣做是爲了在按鈕之間進行切換:

- (void) buttonPushed:(id)sender 
{ 
    myButton1.selected = NO; 
    myButton2.selected = NO; 
    myButton3.selected = NO; 
    if (sender == myButton1) { 
     myButton1.selected = YES; 
    } 
    else if (sender == myButton2) { 
     myButton2.selected = YES; 
    } 
    else if (sender == myButton3) { 
     myButton3.selected = YES; 
    } 
} 

現在的事情是,我還是想的按鈕可以進行選擇,即使文本字段鍵盤向上(當顯示鍵盤時,按鈕和文本字段都可見)。但由於文本字段具有第一響應者,因此按鈕觸摸不被識別(永遠不會到達目標按鈕壓下的方法)。我不希望用戶不得不關閉鍵盤來選擇一個按鈕。 我該怎麼做?謝謝!

回答

0

我認爲你應該使用像

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
or 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

觸摸方法我喜歡ü用touchEnded方法。在這裏你檢查用戶是否在uibutton上點擊,然後做你想做的事

+0

謝謝你。雖然這些觸摸方法似乎不適用於UIButton。我想我可以繼承UIButton並從那裏去攔截觸摸方法。不知道這是否是解決方案,但我會從那裏開始。 – aSadhankar 2011-06-11 07:46:50

+0

你應該檢查斯蒂芬費舍爾的答案。他是對的 – 2011-06-11 09:33:28

1

我從來沒有遇到過使用鍵盤從按鈕獲取事件的問題。你確定你沒有接觸到那個處理程序嗎?

任何機會myButton1等沒有連接?

+0

我沒有使用接口構建器。我簡單地將按鈕添加到視圖後,我設置其屬性。 當鍵盤沒有彈起時,可以使用buttonPushed方法,但當鍵盤彈起時,它根本沒有觸及它。 – aSadhankar 2011-06-11 19:55:13

+0

我是否正確地將按鈕添加到視圖?還是我必須做別的事情?如果我添加「touchesEnded」方法,當點擊除UIButton之外的任何其他屏幕時,點擊該方法。當鍵盤彈起時,如果我點擊任何地方,它不會觸及touchesEnded方法。 – aSadhankar 2011-06-11 20:08:52

3

我想通了。這裏的2個答案是正確的;問題是我在這個視圖上使用了UITapGestureRecognizer。出於某種原因,阻止任何觸摸事件達到預定的水龍頭以外,我想。衛生署。

我刪除了手勢識別器,現在當顯示鍵盤時點擊了觸摸事件。

+0

啊,很好找。感謝分享它。 – 2011-06-11 21:09:37

相關問題