/
githubmr
/
facebook-react-native
Обзор
Документация
Войти
/
githubmr
/
facebook-react-native
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-native/React/Views/RCTSwitchManager.m
70 строк
2 KB
Ramanpreet Nara
Consolidate all c macros (#53823)
26 сен 2025, 02:59
26 сен 2025, 02:59
d389008
Код
Авторство
О чём код?
/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import "RCTSwitchManager.h" #ifndef RCT_REMOVE_LEGACY_ARCH #import <React/RCTUIManager.h> #import "RCTBridge.h" #import "RCTSwitch.h" #import "UIView+React.h" @implementation RCTSwitchManager RCT_EXPORT_MODULE() - (UIView *)view { RCTSwitch *switcher = [RCTSwitch new]; [switcher addTarget:self action:@selector(onChange:) forControlEvents:UIControlEventValueChanged]; return switcher; } - (void)onChange:(RCTSwitch *)sender { if (sender.wasOn != sender.on) { if (sender.onChange) { sender.onChange(@{@"value" : @(sender.on)}); } sender.wasOn = sender.on; } } RCT_EXPORT_METHOD(setValue : (nonnull NSNumber *)viewTag toValue : (BOOL)value) { [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) { UIView *view = viewRegistry[viewTag]; if ([view isKindOfClass:[UISwitch class]]) { [(UISwitch *)view setOn:value animated:NO]; } else { RCTLogError(@"view type must be UISwitch"); } }]; } RCT_EXPORT_VIEW_PROPERTY(onTintColor, UIColor); RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor); RCT_EXPORT_VIEW_PROPERTY(thumbTintColor, UIColor); RCT_REMAP_VIEW_PROPERTY(value, on, BOOL); RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock); RCT_CUSTOM_VIEW_PROPERTY(disabled, BOOL, RCTSwitch) { if (json) { view.enabled = !([RCTConvert BOOL:json]); } else { view.enabled = defaultView.enabled; } } RCT_REMAP_VIEW_PROPERTY(thumbColor, thumbTintColor, UIColor); RCT_REMAP_VIEW_PROPERTY(trackColorForFalse, tintColor, UIColor); RCT_REMAP_VIEW_PROPERTY(trackColorForTrue, onTintColor, UIColor); @end #endif // RCT_REMOVE_LEGACY_ARCH