index.uts 1.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
import { UIButton, UIControl,ButtonType } from "UIKit"

export class NativeButton {

	element : UniObjectElement;
	button : UIButton;

	constructor(element : UniObjectElement) {
		this.element = element;
		this.button = new UIButton(type=UIButton.ButtonType.system)
		super.init()
		
		// 在 swift target-action 对应的方法需要以OC的方式来调用,那么OC语言中用Selector来表示一个方法的名称(又称方法选择器),创建一个Selector可以使用 Selector("functionName") 的方式。
		const method = Selector("buttonClickAction")
		// button 添加点击回调
		button.addTarget(this, action = method, for = UIControl.Event.touchUpInside)
		
		this.bind();
	}

	// element 绑定原生view
	bind() {
		this.element.bindIOSView(this.button);
	}

	// 更新button文字
	updateText(text : string) {
		this.button.setTitle(text, for = UIControl.State.normal)
	}

	/**
	 * 按钮点击回调方法
	 * 在 swift 中,所有target-action (例如按钮的点击事件,NotificationCenter 的通知事件等)对应的 action 函数前面都要使用 @objc 进行标记。
	 */
	@objc buttonClickAction() {
		// 发送事件
		let event = new UniObjectCustomEvent("customClick")
		this.element.dispatchEvent(event)
	}


	destroy() {
		UTSiOS.destroyInstance(self)
	}
}