簡體   English   中英

iPhone UIButton addTarget:action:forControlEvents:不起作用

[英]iPhone UIButton addTarget:action:forControlEvents: not working

我看到這里也發布了類似的問題,但是沒有一種解決方案適合我。 開始:

我在一個UIView框架內有一個UIButton實例,該實例位於另一個UIView框架內,后者又位於主窗口UIView中。 以機智:

UIWindow 
--> UIView (searchView)
  --> UISearchBar (findField)
  --> UIView (prevButtonView)
    --> UIButton (prevButton)
  --> UIView (nextButtonView)
    --> UIButton (nextButton)

到目前為止,一切都很好:一切都按照我的意願進行了布置。 但是,這些按鈕不接受任何類型的用戶輸入。 我正在使用UIButton方法addTarget:action:forControlEvents:並讓您了解我在做什么,這是nextButton的代碼:

nextButton = [UIButton buttonWithType:UIButtonTypeCustom];
[nextButton setImage:[UIImage imageNamed:@"find_next_on.png"] forState:UIControlStateNormal];
[nextButton setImage:[UIImage imageNamed:@"find_next_off.png"] forState:UIControlStateDisabled];
[nextButton setImage:[UIImage imageNamed:@"find_next_off.png"] forState:UIControlStateHighlighted];
[nextButton addTarget:self action:@selector(nextResult:) forControlEvents:UIControlEventTouchUpInside];

方法nextResult:永遠不會被調用,觸摸時按鈕的狀態不會改變,並且我沒有做過該死的事情來使其正常工作。 我認為所有這些視圖層都有問題:也許我的按鈕上方有東西,但我不確定它可能是什么。

為了信息過載,我發現了一些代碼,可以打印出我所有的視圖信息。 這是我整個視圖層次結構的結果:

UIWindow
{{0, 0}, {320, 480}}
UILayoutContainerView
{{0, 0}, {320, 480}}
    UINavigationTransitionView
    {{0, 0}, {320, 480}}
        UIViewControllerWrapperView
        {{0, 64}, {320, 416}}
            UIView
            {{0, 0}, {320, 416}}
                UIWebView
                {{0, 44}, {320, 416}}
                    UIScroller
                    {{0, 0}, {320, 416}}
                        UIImageView
                        {{0, 0}, {54, 54}}
                        UIImageView
                        {{0, 0}, {54, 54}}
                        UIImageView
                        {{0, 0}, {54, 54}}
                        UIImageView
                        {{0, 0}, {54, 54}}
                        UIImageView
                        {{-14.5, 14.5}, {30, 1}}
                        UIImageView
                        {{-14.5, 14.5}, {30, 1}}
                        UIImageView
                        {{0, 0}, {1, 30}}
                        UIImageView
                        {{0, 0}, {1, 30}}
                        UIImageView
                        {{0, 430}, {320, 30}}
                        UIImageView
                        {{0, 0}, {320, 30}}
                        UIWebDocumentView
                        {{0, 0}, {320, 21291}}
                UIView
                {{0, 0}, {320, 44}}
                    UISearchBar
                    {{10, 8}, {240, 30}}
                        UISearchBarBackground
                        {{0, 0}, {240, 30}}
                        UISearchBarTextField
                        {{5, -2}, {230, 31}}
                            UITextFieldBorderView
                            {{0, 0}, {230, 31}}
                            UIPushButton
                            {{205, 6}, {19, 19}}
                            UIImageView
                            {{10, 8}, {15, 15}}
                            UILabel
                            {{30, 7}, {163, 18}}
                    UIView
                    {{290, 15}, {23, 23}}
                        UIButton
                        {{0, 0}, {0, 0}}
                            UIImageView
                            {{-12, -12}, {23, 23}}
                    UIView
                    {{260, 15}, {23, 23}}
                        UIButton
                        {{0, 0}, {0, 0}}
                            UIImageView
                            {{-12, -12}, {23, 23}}
    UINavigationBar
    {{0, 20}, {320, 44}}
        UINavigationButton
        {{267, 7}, {48, 30}}
            UIImageView
            {{0, 0}, {48, 30}}
            UIButtonLabel
            {{11, 7}, {26, 15}}
        UINavigationItemView
        {{79, 8}, {180, 27}}
        UINavigationItemButtonView
        {{5, 7}, {66, 30}}
MBProgressHUD
{{0, 0}, {320, 480}}
    UIActivityIndicatorView
    {{141, 206}, {37, 37}}
    UILabel
    {{117, 247}, {86, 27}}

相關部分在UINavigationBar部分上方進行了注明。

有人有什么建議嗎? 我全力以赴。

謝謝閱讀。

亞倫。

我想通了,所以為了后代,這是交易。

最初,我是通過將按鈕嵌套到UIViews中並設置其框架屬性來定位按鈕的。 我可以通過利用UIButton對UIView的繼承來簡化此操作。 因此,我取消了嵌套視圖,並聲明了UIButton的位置,如下所示:

nextButton.frame = CGRectMake(searchView.frame.size.width - 30, 15, 23, 23);

但這並不能解決我的問題。 它只是使我的代碼更簡潔。 原來是導致問題的原因是我框架的X屬性的計算。 當我這樣重構時:

NSInteger nextX = searchView.frame.size.width - 30;
nextButton.frame = CGRectMake(nextX, 15, 23, 23); 

一切再次開始工作。 去搞清楚。

干杯! 亞倫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM