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

有没有一个函数可以用来找出哪个UIButton被按下了,并返回true或false?

在iOS开发中,可以使用UIButton的addTarget方法来监听按钮的点击事件。通过给按钮添加不同的target和action,可以在按钮被按下时执行相应的操作。以下是一个示例代码:

代码语言:txt
复制
func buttonPressed(sender: UIButton) {
    // 按钮被按下时执行的操作
    print("Button pressed!")
}

// 创建按钮
let button = UIButton(type: .system)
button.setTitle("Press me", for: .normal)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 50)

// 添加按钮点击事件监听
button.addTarget(self, action: #selector(buttonPressed(sender:)), for: .touchUpInside)

// 将按钮添加到视图中
view.addSubview(button)

在上述代码中,通过调用addTarget(_:action:for:)方法,将buttonPressed(sender:)方法与按钮的.touchUpInside事件关联起来。当按钮被按下时,buttonPressed(sender:)方法会被调用。

如果需要判断哪个UIButton被按下了,并返回true或false,可以通过给每个按钮设置不同的tag值来区分。在buttonPressed(sender:)方法中,可以根据按钮的tag值进行判断。以下是修改后的示例代码:

代码语言:txt
复制
func buttonPressed(sender: UIButton) {
    if sender.tag == 1 {
        print("Button 1 pressed!")
        return true
    } else if sender.tag == 2 {
        print("Button 2 pressed!")
        return true
    } else {
        print("Unknown button pressed!")
        return false
    }
}

// 创建按钮1
let button1 = UIButton(type: .system)
button1.setTitle("Button 1", for: .normal)
button1.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
button1.tag = 1
button1.addTarget(self, action: #selector(buttonPressed(sender:)), for: .touchUpInside)
view.addSubview(button1)

// 创建按钮2
let button2 = UIButton(type: .system)
button2.setTitle("Button 2", for: .normal)
button2.frame = CGRect(x: 100, y: 200, width: 100, height: 50)
button2.tag = 2
button2.addTarget(self, action: #selector(buttonPressed(sender:)), for: .touchUpInside)
view.addSubview(button2)

在上述代码中,通过给按钮设置不同的tag值,可以在buttonPressed(sender:)方法中根据tag值判断哪个按钮被按下了,并返回相应的结果。

请注意,以上示例代码是使用Swift语言编写的,如果使用Objective-C语言进行开发,可以使用类似的方法来实现按钮点击事件的监听和判断。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何理解互斥锁

当条件变量唤醒时,wait 函数会自动锁定互斥锁,调用谓词函数检查特定条件是否满足。如果谓词函数返回 true,则表示特定条件已经满足,此时 wait 函数返回。...条件变量的工作原理 可以将条件变量比作一个闹钟,它可以让线程进入睡眠状态,并在特定条件下唤醒线程。当调用条件变量的 wait 函数时,线程就像是一个人躺在床上,下了闹钟的按钮,然后进入了睡眠状态。...由于 ready 变量已经设置为真,因此特定条件已经满足,此时 wait 函数返回。 wait自动解锁互斥锁阻塞当前线程 可以将互斥锁比作一扇门,它可以防止多个线程同时访问共享资源。...而条件变量可以比作一个闹钟,它可以让线程进入睡眠状态,并在特定条件下唤醒线程。当调用条件变量的 wait 函数时,线程就像是一个人躺在床上,下了闹钟的按钮,然后进入了睡眠状态。...此时,线程不会执行任何操作,直到唤醒。 当调用 wait 函数时,它会自动解锁互斥锁阻塞当前线程。这就像一个人躺在床上,下了闹钟的按钮,然后起身去开门,把门打开,再回到床上继续睡觉。

8210
  • pandas 重复数据处理大全(附代码)

    ---- 重复值处理主要涉及两个部分,一个找出重复值,第二个是删除重复值,也就是根据自己设定的条件进行删除操作。...keep:用来确定要标记的重复值,可以设置为first、last、False。...price hobby 0 zszxz 100 reading 1 zszxz 200 reading ------------------- 上面user一个变量进行查重,设置keep参数为False...通过两个参数的设置就可以查看自己想要的重复值了,以此判断要删除哪个,保留哪个。 删除重复值 当确定好需要删除的重复值后,就进行进行删除的操作了。 删除重复值会用到drop_duplicates函数。...默认为False,是否直接在原数据上删除重复项删除重复项后返回副本。

    2.4K20

    当你下方向键,电视是如何寻找下一个焦点的

    为什么时隔多年会突然想起这个呢,其实是因为最近在给我开源的思维导图添加方向键导航的功能时,想到其实和电视聚焦功能很类似,都是方向键,来计算并且自动聚焦到下一个元素节点: 那么如何寻找下一个焦点呢,结合我当时用的焦点库的原理...1.最简单的算法 第一种算法最简单,根据方向先找出当前节点该方向所有的其他节点,然后再找出直线距离最近的一个,比如当下了左方向键,下面这些节点都是符合要求的节点: 从中选出最近的一个即为下一个聚焦节点...,然后再从中找出和当前聚焦节点距离最近的节点,所以维护最近距离节点的函数可以复用的,通过参数的形式传给具体的计算函数。...2.阴影算法 该算法也是分别处理四个方向,但是和前面的第一种算法相比,额外要求节点在指定方向上的延伸需要存在交叉,延伸处可以想象成是节点的阴影,也就是名字的由来: 找出所有存在交叉的节点后也是从中找出距离最近的一个节点作为下一个聚焦节点...3.区域算法 所谓区域算法也很简单,把当前聚焦节点的四周平分成四个区域,对应四个方向,寻找哪个方向的下一个节点就先找出中心点在这个区域的所有节点,再从中选择距离最近的一个即可: focus(dir)

    56440

    手把手教你用 Python 实现浪漫表白程序

    但是其中大多数形式都已经公众所知晓,且缺乏流动性。故今天我们将自行设计一个表白浪漫程序,具有动态开关宠物、照片墙、弹窗提示以及 turtle 画图等功能。...设置为 True 时,只要鼠标在窗口内移动时 mouseMoveEvent 事件就能捕获 设置为 False 时(默认),只有鼠标键下并在窗口内移动时 mouseMoveEvent 事件才能捕获 注意只能是...QWidget,如果是 QMainwindow,则无效 self.hasMouseTracking()返回设置的状态 1.5 创建多线程时间变化 定义时间变化函数一个线程用来更新动画,另一个用来更新对话框...2.2 鼠标下调用 通过 n = event.button() 用来判断是哪个鼠标健触发了事件【返回值:0 1 2 4】。...QtCore.Qt.Mion QtCore.Qt.MiddleButton -4 -下鼠标中键 通过 nn = event.buttons() 返回前面所列枚举值的组合,用于判断同时下了哪些键

    1.7K30

    或许你就差这一个神器

    个人习惯,也可以在做完图后再取消勾选。 ? 调整格式 根据自己的需求,调整好版面格式,设置动态变化的公式解释语句。...、返回近似精确匹配 - 指示为 1/TRUE 0/FALSE) 。...range_lookup (可选)一个逻辑值,该值指定希望 VLOOKUP查找近似匹配还是精确匹配:近似匹配 - 1/TRUE假定表中的第一列数字字母顺序排序,然后搜索最接近的值。...包含要返回的值的单元格区域中的列号:即找到后,要它身上哪个地方的东西?需要部门表 第二列的部门。 返回近似精确匹配 - 指示为 1/TRUE 0/FALSE:即是准确找,还是近似找?...如果row_num和column_num,INDEX 将返回引用中 area_num。 函数 INDEX 的结果为一个引用,且在其他公式中也解释为引用。

    8K60

    ATmega8仿真——键盘扫描的学习

    (2)软件设计:在软件中对按键进行二次测试确认,即当第一次检测到按键下后,间隔10 毫秒左右再次检测该按键是否下,只有两次都册到按键下时才确认该按键下了,从而消除抖动干扰。...确定是哪个按键的流程:(???) (1)在行和列的一个口中输出高电平,在另一个行列口读取一个扫描码; (2)在后一个行列口中输出高电平,在前一行列口读取第二个扫描码; (3)查表确定哪个按键下。...电路图如下: 程序实现步骤: (1)确定有无按键下; (2)确定是哪个按键; (3)返回该按键值处理对应的任务; (4)再加上,考虑抖动消除,等待按键的断开。...:按键的列 8 * 9 *1:确定有无按键下,main函数两次判断实现; 10 *2:确定是哪个按键,ScanKey函数实现; 11 *3:返回该键值处理对应的任务,main...,MCU 响应该中断,确定哪个按键下,处理相应函数

    1.1K10

    Spring启动过程中实例化部分代码的分析(Bean的推断构造方法)

    开发者可以通过什么方式来指定使用哪个构造方法呢?     ...,@Autowired注解可以写在构造方法上,所以哪个构造方法上写了@Autowired注解,表示开发者想使用哪个构造方法,当然,它和第一个方式的不同点是,通过xml的方式,我们直接指定了构造方法的参数值...>> candidates = new ArrayList(rawCandidates.length); // 用来记录required为true的构造方法,一个类中只能有一个...返回null 存在加了@Autowired注解的构造方法 只有一个required为true的构造方法 --》 返回此构造方法 有多个required...,可能会返回带注解的构造方法 没有required为true的构造方法 --》 返回所有required为false的构造方法以及无参构造方法

    97330

    Swift-MVVM 简单演练(一)

    super.viewDidLoad() setupChildControllers() } } /* extension 类似于 OC 中的分类,在 Swift 中还可以用来切分代码块...可以把功能相近的函数,放在一个extension中 */ extension HQMainViewController { /// 设置所有子控制器 fileprivate...方法不能方便的满足我们创建所需的leftBarButtonItemrightBarButtonItem 如果自定义创建需要些好几行代码 而这些代码又可能在很多地方用到,所以尽量抽取个便利构造函数 一般自定义...icon而已 因此,我们如果对自定义快速创建leftBarButtonItem这里如果能直接改好了就最好 小技巧: 当你想查看某一个方法都在哪个文件内哪些方法调用的时候 你可以在这个方法的方法明上右键...即闭包在函数执行完以后调用了,调用的地方超过了request函数的范围,这种闭包叫做逃逸闭包。 swift 3.0中对闭包做了改变,默认请款下都是非逃逸闭包,不再需要@noescape修饰。

    10.3K51

    JavaScript 事件对象

    onclick表示一个事件处理函数绑定对象的属性(或者叫事件监听器、侦听器)。document表示一个绑定的对象,用于触发某个元素区域。function()匿名函数是被执行的函数,用于触发后执行。...alert(arguments.length);//1,得到一个隐藏参数 }; 通过上面两组函数中,我们发现,通过事件绑定的执行函数可以得到一个隐藏参数的。...如果cancelabel是true,则可以使用这个方法 stopPropagation() Function 只读 取消事件的进一步捕获冒泡。...等同于发生事件的window对象 IE中event对象的属性 属性 类型 读/写 说明 cancelBubble Boolean 读/写 默认值为false,但将其设置为true可以取消事件冒泡 returnValue...Boolean 读/写 默认值为true,但将其设置为false可以取消事件的默认行为 srcElement Element 只读 事件的目标 type String 只读 触发的事件类型 在这里

    1.9K100

    AttributeCollection类与Attributes.Add方法的使用

    AttributeCollectin类的主要目的是使开发人员可以通过编程的方式访问服务器的所有属性,实现对这些属性的编辑。...none'”); javascript事件: onClick 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick 鼠标双击事件 onMouseDown 鼠标上的按钮下了...[注意:页面内必须有聚焦的对象] onKeyDown 当键盘上某个按键下时触发的事件[注意:页面内必须有聚焦的对象] onKeyUp 当键盘上某个按键放开时触发的事件[注意:页面内必须有聚焦的对象...aspx面页的js函数,必须有返回值,为:true false } //接着写Button1的onclick事件,如果刚才的checkSame()返回true则招行下面的事件,...这是一个用来判断两次密码输入是否一致的函数 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    1.7K30

    iOS_单元测试二之UITests

    snapshot 4、XCUICoordinate UI测试的正确性的一般模式如下: 简单举例: 1、业务代码: 2、测试代码: UI测试基于三个新类的实现: XCUIApplication:代表整个应用程序,可以用来启动...常用来查询UI上的元素 XCUIElementQuery:代表一系列可查询的UI元素 XCUIElement:代表具体的UI的元素 建一个UITests类: 那些setUp和tearDown方法这里就不一一赘述了...,有以下3种情况: // 1、程序当前处于特定状态:立即返回true // 2、超时之前程序转为特定状态:返回true // 3、超时后:返回false let result = app.wait(for...device.orientation // siri 服务 let siriService = device.siriService // 如果Siri用户界面当前未处于活动状态,则显示该用户界面,接受一个字符串...catch { print("snapshot error: \(error)") } 4、XCUICoordinate XCUICoordinate屏幕上相对于某个UI元素的位置 // 创建返回一个新的坐标

    78420

    Swift Runtime ?

    对于我们熟悉的C语言,函数的调用在编译的时候会决定调用哪个函数。...但对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。      ...OC 的函数是属于动态调用,在编译的时候是不能决定真正去调用那个函数的,只有在运行的时候才能决定去调用哪一个函数 ,在编译阶段,OC可以调用任何的函数,即使这个函数没有实现,只要声明过也就不会报错。...(以前面试有人问过OC怎样Hook一个消息,那时候太懵懂,不知道怎么说!不知道大家有没有遇到过?)            ...可以看到在自己定义的方法前面加了时间判断,最后还是调用了方法本身!这样就有了一个问题。你用自己的方法代替了系统的方法,加入了自己的一些东西,最有没有再去调用系统的方法?

    4.9K71

    Swift - Button,Label

    Swift-Button的常用 func setButton() { // 创建一个类型为contactAdd的按钮 let button:UIButton = UIButton(type...//使触摸模式下按钮也不会变暗(半透明) button.adjustsImageWhenDisabled = false //使禁用模式下按钮也不会变暗(半透明) // button...圆形按钮 常用的触摸事件类型: TouchDown:单点触摸下事件,点触屏幕 TouchDownRepeat:多点触摸下事件,点触计数大于1,下第2、3第4根手指的时候 TouchDragInside...TouchUpOutside:在控件之外触摸抬起事件 TouchCancel:触摸取消事件,即一次触摸因为放上太多手指而取消,或者电话打断 */ Swift里Label的使用 func setLabel...=true //当文字超出标签宽度时,自动调整文字大小,使其不被截断 // 自动换行,0表示没有行数限制 注意行高 // label.numberOfLines=2 /

    1.7K20

    leetcode 36. 有效的数独

    我们可以考虑一种简单的情况: 一个3x9的矩阵,分成3个3x3的box,如图: 显然每个数属于哪个box就只取决于纵坐标,纵坐标为0/1/2的都属于box[0],纵坐标为3/4/5的都属于box...简单来说,每一行有三个区域,要确定当前位置属于哪个区域,首先可以列看,因为每三列组成一个区域,而一行共九列,我们只需要把当前位置的列表j/3,得到的值就是列看所在的区域的列坐标(这里可以一个区域细化为...3) * 3][curNum-1]) return false; // 之前都没出现过,现在出现了,就给它置为1,下次再遇见就能够直接返回false了。...所以我们只需要对 board 中出现的数进行判断,如果 board 中有数违反了数独的规则,返回 false,否则返回 true。...这道题唯一的难点可能是在于如何确定某个数落在哪个小方块中,我们可以去小方块进行编号: 然后推导出小方块编号和行列的关系为: idx = i / 3 * 3 + j / 3。

    47720

    从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理

    一、事件冒泡与阻止事件冒泡 事件冒泡:当一个元素触发某个事件的时候,会把这个事件传播到其父元素,一直到顶层元素。 阻止事件冒泡:在被触发事件的子元素中添加 return false; 即可。...三、事件参数对象 事件处理函数有没有参数呢? 通过 arguement.length 可以得到有一个参数,这个参数是一个对象,里面有很多事件相关的属性。...alt下了"); } else if (e.ctrlKey) { console.log("ctrl下了"); } else if (e.shiftKey...}); altKey, ctrlKey, shiftKey 相应的按键下后,对应事件的值为 true。...// 鼠标下的键值 e.button // 按键下的键值 e.keyCode // 触发该事件的目标对象,是一个 DOM 对象 // 当发生事件冒泡的时候,可以定位到具体发生事件的源对象,而不是冒泡的对象

    77240

    2014-10-27Android学习------布局处理(七)------26个字母的布局列表的监听事件处理-----城市列表应用程序

    这样,程序便可以在特定的事件dispatch到该view的时候,通过callback函数给予适当的响 应。...同样是当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。...该方法并不只处理一种事件,一般情况下三种触摸类型情况的事件全部由onTouchEvent方法处理: MotionEvent.ACTION_DOWN:屏幕下:当屏幕下时,会自动调用该方法来处理事件...switch (action) {//触摸事件的分发调度了,如果返回的是一个true值,将让onTouchEvent()进行处理 case MotionEvent.ACTION_DOWN:...接下来又是执行了onDraw()函数,就是更新视图,等待用户的继续操作 从这个输出logcat里面我们可以看到:activity可以去调用dispatchTouchEvent()函数,而且监听事件中是这个函数一个执行

    47530

    iOS 中的事件响应

    ,iOS 系统便会根据 Hit-Testing 的过程来确定触摸事件发生在哪个视图对象上,其实 Hit-Testing 的过程本质就是找到第一响应者(最佳响应者,后文统一称为第一响应者)。...苹果回复意思就是说:hitTest 是一个没有副作用的纯函数,进行多次调用也不会对外产生影响,因此系统可以多次调用调整 Point。...需要注意,只有当touchesEnded函数正常触发,才能说事件响应了。...传递到 UIScrollView 后,其会先将该事件拦截而不会立即传递给对应的子视图, 同时开始一个 150ms 的倒计时,监听用户接下来的行为。.../// hitTest返回为父View,则返回true,手势生效; /// 如果返回为UICollectionView,则返回false,手势不生效,UICollectionView的didSelectItemAt

    2.7K11
    领券