Skip to content

UIKit tracking

CimkaUIKit tracks taps, screens and view-controller lifecycle without any per-screen code.

.product(name: "CimkaUIKit", package: "cimka-sdk-ios")
import CimkaCore
import CimkaUIKit
Cimka.initialize()
CimkaUIKit.register()

Cimka swizzles UIWindow.sendEvent(_:) and, on each tap, finds the view under the finger and walks up to the nearest control. Each interaction records:

  • accessibility identifier, view class, text and accessibility label
  • the view-hierarchy path and the owning view controller
  • touch coordinates

For text fields, the text is logged as *** when clickLogger.maskSensitiveInputs is true (the default). Secure text fields are always masked.

View controllers are logged on viewDidAppear using the class name without the ViewController/Controller suffix — CheckoutViewController → Checkout. Container controllers (UINavigationController, UITabBarController, UIPageViewController, UISplitViewController) are skipped.

screen_enter on viewDidAppear and screen_exit on viewWillDisappear.

Never log taps on a view (for example a PIN pad) — the exclusion applies to the view and its subviews:

pinPadView.cimkaMasked = true