首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法单击带有setImage的自定义UIButton

问题:无法单击带有setImage的自定义UIButton

答案:当自定义的UIButton带有setImage时,无法单击的原因可能是按钮的交互性被禁用或者按钮的点击事件被屏蔽。以下是一些可能的解决方法:

  1. 检查按钮的交互性:确保按钮的isUserInteractionEnabled属性设置为true,以便允许用户与按钮进行交互。
  2. 检查按钮的点击事件:确保按钮的点击事件已正确设置,并且没有被其他代码屏蔽或覆盖。可以通过为按钮添加一个目标-动作方法来处理点击事件,例如:
代码语言:txt
复制
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)

@objc func buttonClicked() {
    // 处理按钮点击事件的代码
}
  1. 检查按钮的图像状态:如果按钮有多个状态(例如normal、highlighted、selected等),请确保为每个状态设置了正确的图像。可以使用setImage(_:for:)方法为每个状态设置图像,例如:
代码语言:txt
复制
button.setImage(normalImage, for: .normal)
button.setImage(highlightedImage, for: .highlighted)
  1. 检查按钮的图像内容模式:如果按钮的图像显示不正确,可以尝试设置按钮的contentMode属性来调整图像的显示方式。常用的contentMode选项包括.scaleAspectFit、.scaleAspectFill和.center等。
代码语言:txt
复制
button.contentMode = .scaleAspectFit
  1. 检查按钮的布局和约束:如果按钮的布局或约束有问题,可能会导致按钮无法点击。请确保按钮的frame或约束设置正确,并且不会被其他视图或布局覆盖。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
  • 腾讯云安全产品:https://cloud.tencent.com/product/security
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UIButtonsetBackgroundImage和setImage方法选择

https://blog.csdn.net/u010105969/article/details/52840728 在设置UIButton图片时候发现有两个方法setBackgroundImage...和 setImage,之前并没有发现两者有太大区别(使用setBackgroundImage后设置title没问题,使用setImage后设置title会被挡住),因为项目中使用带有图片按钮几乎没有文字...而哪些带有文字按钮也没有什么特殊图片,于是会不使用图片。所以本人一直使用setBackgroundImage。 可在使用这个方法时候有一个问题,按钮大小必须和图片大小一样,不然图片会拉伸。...于是我每次都会将按钮大小设置成按钮要使用图片大小。可这样设置了之后,有些按钮上图片会比较小,这样点击区域就回比较小,从而给用户带来不是很好体验效果。...而在使用了setImage这个方法之后发现按钮上图片并不会发生拉伸,而是居中显示在按钮上,这正是我项目中所要效果。于是决定在今后项目中更多地去使用setImage方法。

1.4K20
  • iOS项目——自定义UITabBar与布局

    进行自定义,以达到我们项目需求。...例如新浪微博App底部tabitem就无法用自带TabBarItem进行实现,最中间那个【+】发布微博并不是用来切换tab,而是在当前页面上覆盖一个编辑发布页面,发布完成或者取消发布之后又回到之前页面...主要缺点就是需要先申请一个位置和控制器来占位比较浪费,而且这种也只适用于各控件大小是均匀情况,当我们需求中每个TabBarItem规格和尺寸不一样时,我们就无法使用这种方案实现。   ...TabBar 自定义TabBar可以完全按照我们需求来布局和配置TabBar中各子控件属性和布局。...据说在iOS10之前对badge提示颜色是不能进行配置,这时候如果需要,我们就只能进行自定义TabBarItem,然后对自定义badge进行配置。

    3K90

    实现更安全、高扩展自定义键盘 非UIButton

    自定义键盘原因 自定义键盘封装网上例子比比皆是,有的封装非常完美,直接pod 集成到项目中便可以简单使用,可是为什么我还要自定义一个呢?...官方键盘优点: 触摸事件回调频率在一秒内可以回调几十次 所有的字母都是在一张图片上面,几乎无法抓取到 title 没有的具体按钮可以监控点击事件,点击点 图片更加利于自定义各种复杂界面 从以上优点可以看出...,官方键盘在安全性方面是相当高 自定义键盘 参考官方键盘,写出了自己自定义键盘,也是底层图片实现,监控触摸事件 没有安全只有更安全,这里自定义键盘只是相对于 UIButton 堆积起来键盘,.../** 本库主要是为了实现一个自定义键盘 所有的按键均是图片组成,最大程度上避免了恶意监控控件(UIButton,UILabel)等,防止获取键盘内容 所有的事件均通过手指(触摸)移动,来控制按键变化...触摸事件回调频率高,并且触摸事件中没有数据,最大程度上避免了恶意监控触摸事件,最大程度上避免了恶意监控控件(UIButton,UILabel 此键盘功能是建立在平台思想上开发

    78020

    完美解决UIButton imageView大小控制问题,完美适配iOS13系统图标的降级方案

    在进行iOS应用开发时候,经常会用到带有图标的按钮。...UIButton.setImage 都会出现,图片保持了原图大小这样问题,并且还是被拉伸状态。...UIButtonimageViewsize,frame,但是没有任何效果,网上查了很多在这个部分也是毫无收获,后来发现UIButton图片机制完全是基于 imageEdgeInset 自动计算...下面是我解题思路和方程式: 既然苹果是自动计算,那我也自己也来自动计算一下图片大小好了~ extension UIButton{ // 使用SF图标 size期望图标大小 为空自动计算最佳大小...contentMode = .scaleAspectFit self.setImage( icon, for: .normal) self.tintColor = self.currentTitleColor

    1.5K20

    iOS开发之微信聊天工具栏封装

    在封装聊天工具条时候表情键盘是之前封装好(请参考:“iOS开发之自定义表情键盘(组件封装与自动布局)”),所以拿过来就可以用啦。...3 @property (nonatomic, strong) UIButton *voiceChangeButton; 4 5 //发送语音按钮 6 @property (nonatomic...(nonatomic, strong) UIButton *moreButton; 16 17 //键盘坐标系转换 18 @property (nonatomic, assign) CGRect...,纯代码添加ToolView中要用到组件(分配内存,配置相应属性),因为是自定义组件封装,所以我们storyboard就用不上啦,添加控件代码如下: 1 //控件初始化 2 -(void...5.点击最左边按钮触发事件(切换文本输入框和录音按钮),代码如下: 1 //切换声音按键和文字输入框 2 -(void)tapVoiceChangeButton:(UIButton *) sender

    2.5K80

    Django中自定义带有前后缀递增主键

    最近项目中遇到一个需求,在Djangomodel中主键要带有前缀递增类型主键,比如:exp-1, exp-2…,类似.这样,而且在所有的model中,主键里面递增数据要唯一,不能有重复。...在网上找了一圈没有找到特别好实现方法,自己写了一个,在这里做个记录。...我采用方法其实也很简单: 创建一个单独model,里面只有一个models.AutoField类型字段,可以确保主键中递增数字是全局唯一 在实际业务model中定义一个models.CharFiled...类型主键 修改save方法,为业务模型主键加上前缀 下面是示例代码,可以参考 from django.db import models class AutoIncrementFields(models.Model

    10410

    iOS-UI控件之UIButton

    ---恢复内容开始--- UIButton 既可以显示图片,又可以显示文字,还能随时调整内部位置 系统自带尺寸 storyboard内部调整UIButton属性 状态 监听按钮点击事件 凡是继承自UIControl...(void)setTitleColor:(UIColor *)color forState:(UIControlState)state UI_APPEARANCE_SELECTOR; - (void)setImage...- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR; 自定义...UIButton UIButton内部有两个子控件 UILabel和UIImageView 调整控件内部子控件frame(两种方式) 实现 titleRectForContentRect 和 imageRectForContentRect...UIButton 图片拉伸,大小改变 iOS5之前 // 只拉伸中间1x1区域 //传入左上距离区域 - (UIImage *)stretchableImageWithLeftCapWidth

    92860

    高并发编程-自定义带有超时功能

    我们知道synchronized机制有一个很重要特点是:使用synchronized, 当一个线程获取了锁,其他线程只能一直等待,等待这个获取锁线程释放锁,如果这个线程执行时间很长,其他线程就需要一直等待...除非获取锁线程执行完了该代码块,释放锁或者线程执行发生异常,JVM会使线程自动释放锁。 当然了J.U.C包中 Doug Lea大神已经设计了非常完美的解决方案,我们这里不讨论J.U.C实现。...有几点需要思考 原有的synchronized功能,必须保证,即一个线程拿到锁后,其他线程必须等待 谁加锁,必须由谁来释放 加入超时功能 … 好了,开始吧 ---- 步骤 自定义超时异常处理类 既然要设计带超时功能锁...针对第二点呢: 谁加锁,必须由谁来释放 . 我们来测试下 存在问题 针对第二点呢: 谁加锁,必须由谁来释放 . 我们来测试下 : 假设我们在main线程中调用了unlock方法 ?...修复存在问题 见代码 ? 再次运行测试 ,OK ?

    52940

    Objective-C MapKit使用-LBS简单租车主界面demo效果分析代码demo地址

    车辆类型选择view:选择车辆类型 交互分析 选择车辆类型,地图上出现不同大头针 车辆信息view可滑动,滑动完成后地图定位到当前车辆大头针上 view搭建 车辆选择view:自定义slider...分段滑竿(上一篇文章提到过) 车辆信息View:使用uicollectionView流水布局,做出分页效果 mapView:自定义大头针,根据类型选择不同大头针图片 参数传递 模拟数据通过编写...item布局 给自定义collectionview写一个委托,用来告诉controller当前选择cellitem #import #import "CarModel.h..."; } return _userLocationAnnotation; } 定位当前位置和放大缩小按钮实现 //定位 - (UIButton *)currentLocationBtn...当前位置使用标注 其他位置使用自定义大头针视图 //当前位置大头针 - (MKPinAnnotationView*)customLocalAnnotationView:(id<MKAnnotation

    1.9K40
    领券