内部にカスタム表示を持つ警告コントローラを作成しようとしています。カスタムビューはxibファイルからロードされます。カスタムビューには、uiswitchが含まれています。問題は、クリックイベントがトリガーされておらず、UIスイッチがクリックでオン/オフされないということです。ここで私が上で動作しようとしているコードは次のとおりです。ボタン内部のボタンでのカスタム表示は、iOSでは動作しません。
これは、アラートを提示する私のビューコントローラのボタンクリックイベントである:
@IBAction func btnClicked(_ sender: UIButton) {
let alertController = UIAlertController(title: "\n\n\n\n\n\n", message: "", preferredStyle: UIAlertControllerStyle.alert)
let customView=Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)!.first! as! CustomView
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: {(alert: UIAlertAction!) in print("cancel")})
alertController.addAction(cancelAction)
let somethingAction = UIAlertAction(title: "Something", style: .default, handler: {(alert: UIAlertAction!) in print("something")})
alertController.addAction(somethingAction)
alertController.view.addSubview(customView)
self.present(alertController, animated: true, completion:{})
}
は、これはのCustomViewクラス内のコードです:
class CustomView: UIView {
@IBAction func switchClicked(_ sender: UISwitch) {
print("switch cliked")
}
}
私のCustomView.xibファイルは、参照レイアウトが適切に設定されています。それはちょうど1つのuiswitchを持っています。 CustomView.xibのサイズは「フリーフォーム」に設定されています(問題があるかどうかはわかりません)。私はまた、isUserInteractionEnabledをfalseに設定しようとしました。あるいは、同様の問題を検索しても何も動作しなかった後に、CustomViewやalertController.viewのさまざまな場所でtrueになりました。
UISwitchにターゲットを追加すると、「valueChanged」を選択しましたか? – Lawliet
はい。私はvalueChangedイベントをキャプチャしています。 uiswitchの問題ではありません。問題は、一般的なボタンの種類にあります。単純なuibuttonを配置しても、そのクリックメソッドはトリガされません。 –