UIView中的UIButton不可点击

Posted

技术标签:

【中文标题】UIView中的UIButton不可点击【英文标题】:UIButton inside UIView not clickable 【发布时间】:2012-09-18 03:59:10 【问题描述】:

我对此有点卡住,我在 UIViewController 中有一个 UIButton,但由于某种原因,UIButton 没有响应。

_downloadButton = [[DownloadButtonViewController alloc] init];
_downloadButton.issue = _issue;
_downloadButton.view.frame = CGRectMake(self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y + self.descriptionLabel.frame.size.height + 20, 200, 27);
[self.view addSubview:_downloadButton.view];

UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
tmpButton.titleLabel.text = @"test";
tmpButton.frame = CGRectMake(_downloadButton.view.frame.origin.x, _downloadButton.view.frame.origin.y - 30, _downloadButton.view.frame.size.width, _downloadButton.view.frame.size.height);
[self.view addSubview:tmpButton];

为了查看是否没有任何重叠,我添加了另一个 UIButton 稍低一点,即使我将它添加到相同的位置它仍然有效。

我的应用的结构是这样的

- UIViewController
    - UIScrollView
        - ThumbCover
            - UIImageView
            - DownloadButton --> NOT WORKING
            - UIButton --> WORKING
            - UILabel
        - ThumbCover
            - UIImageView
            - DownloadButton --> NOT WORKING
            - UIButton --> WORKING
            - UILabel
        - ThumbCover
            - UIImageView
            - DownloadButton --> NOT WORKING
            - UIButton --> WORKING
            - UILabel
        - ThumbCover
            - UIImageView
            - DownloadButton --> NOT WORKING
            - UIButton --> WORKING
            - UILabel

DownloadButton 只是一个简单的UIButton,没什么特别的。

【问题讨论】:

尝试更改 uibutton 的位置并检查 没有看到在按钮上添加动作的代码。 你是否覆盖了DownloadButtonViewController的任何触摸方法? @Neo,我把它放在哪里都没关系,DownloadButton 只是从不响应 @Veelian,没有操作按钮仍然可以明显点击,没关系 【参考方案1】:

您已将 viewcontroller 的视图高度指定为 27

_downloadButton.view.frame = CGRectMake(self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y + self.descriptionLabel.frame.size.height + 20, 200, 27);

如果您的按钮框架在其父视图(viewcontroller 的视图)的框架之外,即上述框架,它不会响应您的触摸

【讨论】:

谢谢,好建议,但似乎情况并非如此,我可以将DownloadButtonViewController 添加到其他任何地方,这样就可以了,事实上我还有另一个UIScrollView 具有相同的按钮里面和那里它只是工作 终于弄明白了,和IB中frame的大小有关,不知道为什么不是_downloadButton.view.frame设置的【参考方案2】:

你真的为按钮设置了目标吗? (问,因为在提供的代码中,我看不到!)否则,它当然不会响应。

【讨论】:

如前所述,该按钮在视觉上是不可点击的,tmpButton 也没有目标,但您仍然可以看到它是否可点击。【参考方案3】:

我输入了您的代码,但更改了覆盖的两行,所以只需尝试此代码...

_downloadButton = [[DownloadButtonViewController alloc] init];
_downloadButton.issue = _issue;
_downloadButton.view.frame = CGRectMake(self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y + self.descriptionLabel.frame.size.height + 20, 200, 27);

UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
tmpButton.titleLabel.text = @"test";
tmpButton.frame = CGRectMake(_downloadButton.view.frame.origin.x, _downloadButton.view.frame.origin.y - 30, _downloadButton.view.frame.size.width, _downloadButton.view.frame.size.height);
[self.view addSubview:tmpButton];
[self.view addSubview:_downloadButton.view];

希望对您有所帮助...

:)

【讨论】:

您所做的具体更改是什么? 我只是覆盖按钮见行 [self.view addSubview:_downloadButton.view];位置是最后只是将最后一行放在代码的最后.. :) 我怀疑这会有所不同,tmpButton 只是一个示例,显示视图中的交互实际上是有效的,此外,按钮已经添加到我的视图的最后 它不可点击,是的,我设置了一个目标,只是在这种情况下不可点击,在任何其他情况下它都有效。 好的,因此我只是用_downloadbutton覆盖你的tmpbutton。好的,现在只需将这一行放在所有代码的末尾 [self.view bringSubviewToFront:_downloadButton.view];试试吧,伙计。 :)【参考方案4】:

就我而言,我的动画过渡似乎尚未完成。我忘了把 completeTransition:Bool 放在我的 animateTransition:context 方法的末尾,使我的视图控制器中的所有按钮都被禁用而不是 userinteractionEnabled

【讨论】:

【参考方案5】:

看着你这段代码

_downloadButton = [[DownloadButtonViewController alloc] init];

我并不是说你的命名方式是错误的,但我怀疑你的 DownloadButtonViewController 是否是 UIButton。只是为了确保打开你的 DownloadButtonViewController.h 并检查你是否有这个

@interface DownloadButtonViewController : UIButton

【讨论】:

DownloadButtonViewController 不是 UIButton,它是一个带有 UIButton 内部的 UIView【参考方案6】:
replace this line.. 

tmpButton.titleLabel.text = @"test";

作为

[tmpButton setTitle: @"test" forState:UIControlStateNormal];

【讨论】:

以上是关于UIView中的UIButton不可点击的主要内容,如果未能解决你的问题,请参考以下文章

Swift:UIButton 不可点击的重叠视图

UIButton 在第一次点击后不可点击

添加为 UIView 的子视图后,按钮不可点击

UITableViewCell 中的 UIButton 不可点击

如何从模态 UIView 更新自定义单元格中的 UIButton 标题

如何滚动到 UIScrollview 中的 UIButton 位置