簡體   English   中英

UIButton選擇器在嵌套的UIView中不起作用

[英]UIButton selector doesn't work in nested UIViews

我有這個問題使我發瘋。 我花了數十年的時間弄清楚為什么會這樣。

我有一個UIScrollView作為UIView scrollView 在這個scrollView中,我有三個在運行時創建的UIView 在這三個UIView的一個中,我創建了一個按鈕。這是我要做的代碼。

        UIButton *buttonLike = [UIButton buttonWithType:UIButtonTypeRoundedRect ] ;
        buttonLike.frame =CGRectMake(scrollViewWidth +200, 30,36, 16);
        buttonLike.imageView.image = [UIImage imageNamed:@"like.png"];
        [buttonLike addTarget:self action:@selector(buttonLikePressed:) forControlEvents:UIControlEventTouchUpInside] ;

scrollViewWidth是一個定義並初始化的常量。
而且,我添加此紐扣作為一個子視圖UIViews 但是,無論我做什么, buttonLikePressed方法都不會調用。 我已經搜索了此問題,並提出了這些解決方案。

iPhone UIButton在嵌套的UIView中不起作用
iPhone SDK 2:UIButton在從nib文件加載的嵌套視圖中不起作用

他們描述了同樣的問題。 但是,作為解決方案,他們使用
-(id)initWithFrame:(CGRect)aRect方法。 好了,我已經使用initWithFrame方法初始化了我的UIViews 你們知道我如何解決這個問題嗎?

謝謝你們

您的按鈕甚至對觸摸有反應嗎? 按下時是否突出顯示?

因為這聽起來像是您要將按鈕添加到該視圖范圍之外的視圖中,從而阻止了觸摸傳播到該按鈕。 您必須將該視圖的寬度增加到scrollViewWidth + 200 + 36或更大,或者需要將按鈕放置在視圖的邊界內。 向我們展示如何創建添加了按鈕的視圖。

您應該使用initWithFrame初始化所有這些視圖,並傳遞有效的幀rect。 試試這個,你喜歡按鈕將工作!

我認為UIButton應該首先獲取觸摸事件,但是我也遇到類似的問題,即按鈕沒有被按下。 我最終要做的是在父視圖的touchesBegan方法中運行檢查,以查看它是否在按鈕區域附近被觸摸。 這對於我的情況也非常有幫助,因為我可以指定更大的區域,因此按鈕更易於按下。 然后,我剛剛觸發了按鈕的touch事件。

另一種更容易的方法是將按鈕的父視圖的UserInteractionEnabled設置為false,當然,僅在不需要它們響應觸摸時才設置。

這些只是解決您的問題的想法,不確定如何真正解決問題。

暫無
暫無

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

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