[英]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.