【问题标题】:UIButton not clickableUIButton 不可点击
【发布时间】:2012-05-10 11:27:31
【问题描述】:

我在其他帖子中搜索过,但找不到解决方案。

我有一个无法点击的 UIButton。当我点击时,它不会变暗。 问题不在于选择器方法。

谁能帮帮我?!代码如下:

- (void)drawRect:(CGRect)rect
{

    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 436)];

    UIView *detailsView = [[UIView alloc] init];

// I have other components here and after the UIButton

    UIButton *btnOpenPDF = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnOpenPDF setBackgroundImage:[UIImage imageNamed:@"btnVisualizarPdf"] forState:UIControlStateNormal];
    [btnOpenPDF setFrame:CGRectMake(35, totalHeight, 249, 30)];
    btnOpenPDF.userInteractionEnabled = YES;
    [btnOpenPDF addTarget:self action:@selector(openPdf:) forControlEvents:UIControlEventTouchDown];

    [detailsView addSubview:btnOpenPDF];

    [scroll addSubview:detailsView];

    [self addSubview:scroll];

}

上面的代码在一个 UIView 里面,它是通过 UIViewController 通过方法 -loadView() 调用的。

下面是openPdf的方法:

- (IBAction)openPdf:(id)sender{
// Creates an instance of a UIWebView
    UIWebView *aWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320,450)];

// Sets the scale of web content the first time it is displayed in a web view
    aWebView.scalesPageToFit = YES;
    [aWebView setDelegate:self];

//Create a URL object.
    NSURL *urlString = [NSURL URLWithString:[NSString stringWithFormat:@"http://portalarp.com.br/portal/%@",[[[[[[[delegateFunctions products] objectAtIndex:[delegateFunctions selectedProductIndex]] objectForKey:@"ata"] objectForKey:@"nm_arquivo"] objectForKey:@"text"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByReplacingOccurrencesOfString:@"\t" withString:@""]]];

//URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:urlString];

//load the URL into the web view.
    [aWebView loadRequest:requestObj];

    [self addSubview:aWebView];
    [aWebView release];
}

【问题讨论】:

  • 您确定事件“UIControlEventTouchDown”.. 还是您尝试像往常一样按下“UIControlEventTouchUpInside”??
  • 它正在使用 UIControlEventTouchDown,因为我在另一篇文章中看到它对某人有用......但是,同时使用它们,它仍然不起作用。
  • “仍然不起作用”是什么意思..按钮没有突出显示或选择器根本没有调用?!
  • 按钮没有高亮显示,所以选择器根本没有被调用...
  • ok 尝试将 detailView 的背景颜色更改为红色,并检查您的按钮是否完全在红色区域内。

标签: objective-c ios cocoa-touch uibutton


【解决方案1】:

drawRect 是放置此代码的奇怪位置。它被调用来绘制视图,并且可以想象被调用很多——你不应该在那里构建视图。例如,drawRect 可能会在您触摸按钮时被调用(以重绘它)

如果这是在 UIView 中,init 可能是放置此代码的更好位置。

【讨论】:

  • 即使将代码放在init方法中,按钮仍然无法点击。
  • 有什么事吗?崩溃,异常等?显示openPdf:的声明
  • 另外,您从 drawRect 中提取了所有视图构建代码,对吧? drawRect中还有什么东西吗?除非您需要一个不是内置视图组合的自定义视图,否则可能不应该这样做。
  • 什么都没有发生!就像按钮上有一些不可见的组件一样。 openPdf: 从未被调用过!正如你所说,我从 drawRect 方法中取出了所有东西!我用 openPdf 方法编辑了帖子。
  • 试着用一个按钮制作一个简单的视图——这样行吗?
【解决方案2】:

我认为问题是滚动视图..没有转发触摸事件..尝试执行以下操作:

scroll.userInteractionEnabled = YES;
scroll.exclusiveTouch = YES;

【讨论】:

  • 您是否尝试直接在scrollView上添加按钮而不将其添加到视图中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多