You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.6 KiB
45 lines
1.6 KiB
import androidx.compose.foundation.border |
|
import androidx.compose.foundation.layout.fillMaxWidth |
|
import androidx.compose.foundation.layout.height |
|
import androidx.compose.foundation.layout.padding |
|
import androidx.compose.runtime.Composable |
|
import androidx.compose.runtime.getValue |
|
import androidx.compose.runtime.mutableStateOf |
|
import androidx.compose.runtime.remember |
|
import androidx.compose.runtime.setValue |
|
import androidx.compose.ui.Modifier |
|
import androidx.compose.ui.graphics.Color |
|
import androidx.compose.ui.interop.UIKitView |
|
import androidx.compose.ui.unit.dp |
|
import kotlinx.cinterop.ExperimentalForeignApi |
|
import kotlinx.cinterop.ObjCAction |
|
import platform.CoreGraphics.CGRectMake |
|
import platform.Foundation.NSSelectorFromString |
|
import platform.UIKit.UIControlEventEditingChanged |
|
import platform.UIKit.UITextField |
|
|
|
@OptIn(ExperimentalForeignApi::class) |
|
@Composable |
|
fun UseUITextField() { |
|
var message by remember { mutableStateOf("Hello, World!") } |
|
UIKitView( |
|
factory = { |
|
val textField = object : UITextField(CGRectMake(0.0, 0.0, 0.0, 0.0)) { |
|
@ObjCAction |
|
fun editingChanged() { |
|
message = text ?: "" |
|
} |
|
} |
|
textField.addTarget( |
|
target = textField, |
|
action = NSSelectorFromString(textField::editingChanged.name), |
|
forControlEvents = UIControlEventEditingChanged |
|
) |
|
textField |
|
}, |
|
modifier = Modifier.padding(4.dp).fillMaxWidth().height(30.dp).border(2.dp, Color.Blue), |
|
update = { textField -> |
|
textField.text = message |
|
} |
|
) |
|
}
|
|
|