问题标签 [target-action]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 当事件不是由 UIButton 产生时,是否可以使用委托发送消息?
我想知道如何使用委托MyViewController
从一个名为的类发送时钟消息,MotionListener
但在将 Apple 的解释target-action
转换为可行的命令时遇到了麻烦。
Target-action 是一种设计模式,其中一个对象拥有在事件发生时向另一个对象发送消息所需的信息。存储的信息由两项数据组成:一个动作选择器,它标识要调用的方法,一个目标,它是接收消息的对象。] 1
我可以毫不费力地应用示例(下)中的解释(上),使用委托向每当按下它时调用的目标发送消息myButton
fromButtonInSubview
我假设为了发送不是来自 a 的信号,UIButton,
我仍然需要声明协议[a],给它一个属性[c]并包含一个初始化方法[b]
[一个]
[乙]
[C]
并在接口[d]中声明协议并在实现中添加目标方法[e]
[d]
[e]
然后在MyViewController,
import MotionListener
[f]中,在实现[g]中声明它并定义委托[h]
[F]
[G]
[H]
但是,尽管重新阅读了上面引用的解释并且在几次尝试失败后,我还没有编写一个命令来发送同步信号MotionListener
,MyViewController.
我知道它将具有示例(上图)addTarget:self.delegate
中action:@selector(fromSync:)
的效果。在有人建议我之前,我已经将它的时钟频率设为 50 Hz,而同步信号为 1 HzUIButton
NSTimer selector,
例如
所以我的问题是:使用委托我如何在每次count
轮流时发送同步消息0
?答案可能简单得令人尴尬,但如果你能帮忙,我可以穿上它。谢谢。
swift3 - 将参数传递给函数
//这是以编程方式包含我的按钮操作的函数
// 我的按钮目标选择器函数
但我无法通过,因为编译器抛出错误“'#selector' 的参数不引用'@Objc' 方法、属性或初始化程序
ios - 如何使用 textFieldDidChange 识别哪个 UITextField 已更改
我正在使用几个UITextField
s 并且想要随时在其中任何一个发生任何变化时做任何事情。
它看起来基本上像:
如您所见,我尝试设置标签,但不确定如何在此处访问它们。
我正在使用 XCode 9.01 和 Swift 4。
swift - 以编程方式创建 UIButton 事件时@objc 和 IBAction 之间有什么区别?
从情节提要中创建事件处理程序时UIButton
,Swift@IBAction
在之前添加func
. 当以编程方式将事件添加到 aUIButton
到 afunc
时,Swift 给出一个错误并说我需要@objc
在我的方法前面添加,但是当我添加时@IBAction
,它也会编译。
UIButton
以编程方式向我的事件添加事件时,我应该使用 2 和哪一个之间有区别吗?
swift - NSButton 在 CATransform3DMakeTranslation 之后不可调用
我有一个从未见过iOS
但在macOS Swift
开发中出现的奇怪问题。
我有一个方法NSButton
添加addSubview
到自定义NSView
. 该按钮具有目标功能。此按钮添加到customView
. 如果我将它添加到全局“视图”中直接工作正常。
知道为什么会这样吗?
更新: testButton 后不可点击CATransform
之后就不行了。。
ios - Swift:协议方法作为目标动作中的动作
我想要一个协议:
因此,我可以将任何客户端分配给一个按钮,例如:
但是,它无法编译,因为我必须在 中指定特定函数action
,例如:
如果我想通过一个按钮定位多个客户端,如何解决这个问题?
ios - 如何向另一个类中的 UIButton 添加操作
下面的代码可以正常编译,但会因unrecognized selector sent to instance
错误而崩溃。
我有一个类继承自UIViewController
:
另一个类只是 a 的包装器UIView
并包含按钮:
为了清楚起见,我省略了一大块代码,并保留了我认为必要的部分。我认为我的代码不起作用,因为我误解了目标在addTarget
函数中的工作方式。通常,我只是self
用作按钮操作的目标,所以我只是尝试self
从视图控制器传递给CustomToolbarWrapper
'sinit
函数。
我还尝试了什么:
将按钮的目标从更改target
为self
:
导致应用程序不再崩溃。然而,相反,我相信这行代码没有做任何事情(由于某种原因不会引发错误?),因为尝试打印button.allTargets
甚至button.allTargets.count
导致应用程序在编译时崩溃,出现 EXC_BREAKPOINT 错误并且没有错误描述在控制台或 XCode UI 中(这让我更加困惑,因为我的代码中没有断点!)。
此外,制作buttonPressed(_:)
非静态不会改变前面提到的任何观察结果。
另外,为了确保按钮实际上可以交互,我在以下位置添加了viewDidLoad()
这个Controller
:
Controller
并为按钮添加了一个简单的测试方法:
运行代码确实会在控制台日志中打印“Button Pressed”,因此用户应该能够与该按钮进行交互。
如果您认为这不足以解决问题,请随时告诉我,我将发布更多详细信息。
编辑
我更喜欢在类中保留按钮操作的实现,CustomToolbarWrapper
以防止将来重复代码,因为无论在哪里CustomToolbarWrapper
创建实例,操作都是相同的。
ios - 在 UIControl 上添加多个目标操作的更有效方法
我的应用程序有许多按钮,其行为取决于它们生成的事件:.touchDown
、.touchUpInside
、.touchUpOutside
等。
我使用典型的 Target-Action 机制来设置这些行为:
这是非常冗长的。我的问题是:有没有一种更有效的方法来做到这一点,而无需为每种事件类型提供单独的函数?以下是代码的外观:
我一直在研究各种不使用Selector
而是将方法包装在闭包中的解决方案。恐怕我在 obj-c 或 Swift 方面还没有足够的经验来了解如何重构我的代码来做到这一点,并且还弱地捕获我的目标和对象、识别我的目标以及消除发送者之间的歧义等。
根据这个答案:将闭包作为目标添加到 UIButton
我试图避免经常写这样的东西,这也很冗长
非常感谢您的帮助。谢谢你。