CustomRenderer iOS для кнопки TouchUpInside изменить фон - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь написать CustomRenderer для iOS, с помощью которого я хочу изменить BackgroundColor кнопки, когда пользователь касается ее. Пока я получил это:

public class BtnRendereriOS : ButtonRenderer
{

    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);


        if (Control != null)
        {
            Control.BackgroundColor = UIColor.FromRGB(3, 169, 244);
            Control.Layer.CornerRadius = 0;

        }
        Control.TouchUpInside += (sender, UIButton) => {
            Control.BackgroundColor = UIColor.Brown;
        };


    }
}

Это не работает, однако. Я предполагаю, что должен быть какой-то обработчик событий, чтобы сделать это возможным.

1 Ответ

0 голосов
/ 09 мая 2018

Цвета фона должны быть изначально установлены (если это не цвет по умолчанию), тогда вам нужно установить их обратно на тот же цвет на TouchUpInside и TouchUpOutside.На TouchDown установите цвет, который вы хотите видеть при нажатии кнопки.

Переключить цвет фона:

if (Control != null)
{
    void BackgroundNormalState(object sender)
    {
        (sender as UIButton).BackgroundColor = UIColor.Green;
    }
    BackgroundNormalState(Control);
    Control.TouchUpInside += (object sender, EventArgs e) =>
    {
        BackgroundNormalState(sender);
    };
    Control.TouchUpOutside += (object sender, EventArgs e) =>
    {
        BackgroundNormalState(sender);
    };
    Control.TouchDown += (object sender, EventArgs e) =>
    {
        (sender as UIButton).BackgroundColor = UIColor.Red;
    };
}

Обновление:

Могу ли я изменить свой текстовый цвет через эту группу методов?

Есть SetTitleColor, где вы можете назначить разные цвета для различных значений UIControlState, Normal и Highlighted те, с которых нужно начинать:

Control.SetTitleColor(UIColor.Red, UIControlState.Normal);
Control.SetTitleColor(UIColor.Green, UIControlState.Highlighted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...