【问题标题】:Smaller active area for custom UIBarButtonItem自定义 UIBarButtonItem 的活动区域更小
【发布时间】:2011-01-23 00:17:00
【问题描述】:

我有一个带有自定义 UIBarButtonItem 的 UINavigationBar(它使用 UIButton 作为其自定义视图)。问题是:自定义按钮的活动区域太大,如果我在按钮外点击至少 40 像素,它仍然会被注册为按钮上的点击。这会导致意外点击。如何减少这些按钮的活动区域?

【问题讨论】:

  • 只是提到这一点(从问题中应该很明显,但显然不是):这与减小按钮本身的大小无关。它是关于减少响应按钮触摸的区域。通常,该区域与按钮的大小相同,除了条形按钮项,其活动区域比条形本身大一些,以便更容易点击。

标签: iphone uinavigationcontroller uibutton uibarbuttonitem custom-view


【解决方案1】:

我想你没有改变自定义按钮的大小...... 尝试这样做... 在界面生成器中,选择您要减少活动区域的按钮,然后按“Command+3”或“工具-> 大小检查器”以减少“W”和“H”值... 这将使自定义按钮更小,因此活动区域也会减少......

~拉维拉贾

【讨论】:

    【解决方案2】:

    您是通过 Interface Builder 添加按钮还是以编程方式添加按钮?无论哪种方式,您都可以使用这行代码来设置图像的边界:

    yourButton.bounds = CGRectMake( 0, 0, yourImage.size.width, yourImage.size.height );  
    

    如果您想要一个完整的示例,这是我在我的一个应用中使用的示例:

        UIImage *image = [UIImage imageNamed:@"audio-off.png"];
        UIButton *myMuteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        myMuteButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );    
        [myMuteButton setImage:image forState:UIControlStateNormal];
        [myMuteButton addTarget:self action:@selector(mute) forControlEvents:UIControlEventTouchUpInside];    
        UIBarButtonItem *myMuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myMuteButton];   
        navBar.leftBarButtonItem = myMuteBarButtonItem;
        [myMuteBarButtonItem release];
    

    【讨论】:

      【解决方案3】:

      我也注意到了这种奇怪之处。我发现使用容器 UIView 可以解决这个问题。例如:

      UIButton *menuButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
      [menuButton addTarget:self action:@selector(revealMenu:) forControlEvents:UIControlEventTouchUpInside];
      [menuButton setImage:[UIImage imageNamed:@"menuIcon"] forState:UIControlStateNormal];
      UIView *menuButtonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
      [menuButtonContainer addSubview:menuButton];
      self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:menuButtonContainer];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多