UIswitch: увеличение сенсорной области по сравнению с сенсорной областью по умолчанию.

Я хотел бы увеличить область касания вокруг UISwitch на 10 точек с каждой стороны. Глядя на несколько предложений в соответствующем сообщении (UIButton: сделать область попадания больше, чем область нажатия по умолчанию), я попытался увеличить рамку вокруг UISwitch, используя описанный ниже подход, однако это приводит к тому, что весь UISwitch растягивается, чтобы заполнить новую рамку.

слайд для началастрелка с отступами

Есть ли более разумный способ сделать это?

// Increase margin around switch based on width
const CGFloat desiredWidth = 260.0f;  // real width is 240
const CGFloat margin = 0.5f * (desiredWidth - self.beginSwitch.frame.size.width);

// Add margin on all four sides of the switch
CGRect newFrame = self.beginSwitch.frame;
newFrame.origin.x -= margin;
newFrame.origin.y -= margin;
newFrame.size.width  += 2.0f * margin;
newFrame.size.height += 2.0f * margin;

self.beginSwitch.frame = newFrame;

person Kyle Clegg    schedule 01.02.2013    source источник
comment
Поместите невидимую кнопку поверх него, и при ее нажатии установите состояние кнопки фактического переключателя.   -  person trumpetlicks    schedule 02.02.2013
comment
Может быть, в крайнем случае это сработает. Проблема с таким подходом заключается в том, что пользователь не сможет сдвинуть переключатель так, как он ожидал.   -  person Kyle Clegg    schedule 02.02.2013
comment
Хороший вопрос, я думаю, что я НИКОГДА не двигаю переключатели, я всегда нажимаю их LOL   -  person trumpetlicks    schedule 02.02.2013
comment
Да мне тоже обычно. Я специально сделал этот переключатель шире и позволяю пользователю скользить, чтобы начать сеанс. Они также могут нажимать, но я бы хотел сохранить функциональность слайдов.   -  person Kyle Clegg    schedule 02.02.2013
comment
поэтому поместите четыре невидимые кнопки, по одной с каждой стороны :-) (или только одну, за выключателем)   -  person AlexChaffee    schedule 02.02.2013


Ответы (1)


Я совершил такие подвиги, поместив невидимую кнопку (большего размера) перед изображением (или, в вашем случае, переключателем). Делая это, вы можете УСТАНОВИТЬ состояние переключателя и основываясь на обратном текущем состоянии переключателя. Также выполните свое фактическое действие в коде действия невидимой кнопки.

person trumpetlicks    schedule 01.02.2013