Есть ли простой способ добавить прослушиватель кликов UIButton в Kotlin IOS?
Подпись для
addTarget
(в Котлине) это:
public open external expect fun addTarget(
target: Any?,
action: COpaquePointer? /* = CPointer<out CPointed>? */,
forControlEvents: UIControlEvents /* = ULong */
): Unit
Я думаю, что понимаю, как бы передать указатель на функцию C, но, похоже, здесь не так ...?
1 ответ
Нашел решение здесь: https://discuss.kotlinlang.org/t/how-to-call-a-selector-from-kotlin-for-ios/4591
Ключ в том, чтобы использовать
sel_registerName
для создания указателя и аннотирования цели с помощью
@ObjCAction
:
import kotlinx.cinterop.ObjCAction
import platform.UIKit.*
import platform.objc.sel_registerName
class MyClass() {
val uiButton = UIButton.buttonWithType(UIButtonTypeSystem)
init {
uiButton.setTitle("Click me", UIControlStateNormal)
uiButton.addTarget(this, sel_registerName("clicked"), UIControlEventTouchUpInside)
}
@ObjCAction
fun clicked() {
// React to click here...
}
}