Есть ли простой способ добавить прослушиватель кликов 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...
    }

}
Другие вопросы по тегам