Size: a a a

iOS Developers — русскоговорящее сообщество

2019 December 20

Е

Евгений in iOS Developers — русскоговорящее сообщество
Да, нужно, чтобы они стали ниже. Анимацию пока не прикрутил
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Евгений
При тапе на Хедер секции hitTest() не вызывается
а зачем именно по hitTest?
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
это же у тебя UIButton?
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
Когда UIButton находится за пределами хедера таблицы (UIView), то тап по ним нужно отлавливать по координатам
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
   let pointForTargetView = self.buttonsView.convert(point, from: self);
   if self.buttonsView.bounds.contains(pointForTargetView) {
       return self.buttonsView.hitTest(pointForTargetView, with: event);
   }
   return super.hitTest(point, with: event);
}
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Евгений
Когда UIButton находится за пределами хедера таблицы (UIView), то тап по ним нужно отлавливать по координатам
я так никогда не недал, но почему перестает работать родной селектор кнопки?
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
Событие навешивается также через addTarget(), а вот тап не отлавливается
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
И следовтельно событие не триггерится
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
так селектор все же вызывается всегда, кроме пересечения с хедером? зачем тогда hitTest? слишком сложно для вечера пятницы)
источник

D

Denis in iOS Developers — русскоговорящее сообщество
Подскажите, пожалуйста, если задавать UI программно, то где разместить код, который создает элементы и их вид. И где активировать констрейнты?
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Denis
Подскажите, пожалуйста, если задавать UI программно, то где разместить код, который создает элементы и их вид. И где активировать констрейнты?
масса вариантов, один из - сабклассить UI, другой, иметь конфигураторы, куда передаешь ссылку на UI элемент, а он применяет все нужные стили
источник

D

Denis in iOS Developers — русскоговорящее сообщество
То есть например я создаю класс LoginButton, где прописываю свойства кнопки, а потом в контроллере создаю кнопку уже не UIButton, а своего класса?
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Denis
То есть например я создаю класс LoginButton, где прописываю свойства кнопки, а потом в контроллере создаю кнопку уже не UIButton, а своего класса?
Да, как вариант
источник

D

Denis in iOS Developers — русскоговорящее сообщество
Sasha_A
Да, как вариант
А констрейнты где прописывать?
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
Sasha_A
так селектор все же вызывается всегда, кроме пересечения с хедером? зачем тогда hitTest? слишком сложно для вечера пятницы)
Селектор вызывается только благодаря, тому, что родительская view перенаправляет его с помощью hitTest(). А так, UIView и все дочерние элементы не реагируют на раздражители за пределами view.bounds
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Евгений
Селектор вызывается только благодаря, тому, что родительская view перенаправляет его с помощью hitTest(). А так, UIView и все дочерние элементы не реагируют на раздражители за пределами view.bounds
а тот другой хедер не должен же быть тапабельным? видимо какой-то конфликт происходить, может поможет отключить ему userInteractionEnabled? в любом случае это какой-то странноватый способ и я бы лучше переделал по способу с упоковкой этого всего в view controller
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Denis
А констрейнты где прописывать?
на уровне того элемента, в который встраиаешь subview
источник

D

Denis in iOS Developers — русскоговорящее сообщество
Sasha_A
на уровне того элемента, в который встраиаешь subview
Понял, спасибо
источник

Е

Евгений in iOS Developers — русскоговорящее сообщество
Denis
А констрейнты где прописывать?
Для примера: у тебя есть форма авторизации, где есть текстфилды логин и пароль и кнопка ввода.
Есть 2 пути: создать MySignInView: UIView и в нем создать все элементы и настроить констрейнты. Этот способ способ следует использовать, если ты уверен, что у тебя эта форма будет переиспользоваться в проекте.
А так можно во UIViewController'e просто создать метод createSignInForm и в нем сделать примерно следующее:
let form = UIView(...)

let loginTextView = CustomTextView(...)
let pwdTextV...
let signInButton =...

view.addSubview(...)

// даллее настраиваешь все констреинты
источник

S

Sasha_A in iOS Developers — русскоговорящее сообщество
Denis
Понял, спасибо
но вообще есть и другие варианты, в соседнем канале вот недавно кидали ссылку на тему: https://habr.com/ru/post/327662/ если погуглить думаю можно найти статьи где стравниваются разные способы и выбрать подходящий
источник