Там нет смысла добавлять к коду, который уже был добавлен здесь, как это достаточно хорошо уже и есть некоторые хорошие альтернативы данные. Я собираюсь рассказать вам, почему вы не должны добавлять свои собственные UITextField
s в UIAlertView
, используя addSubview:
.
В основном Apple внесла класс UIAlertView
, который будет использоваться as is
, а иерархия представления для этого класса является частной.
подклассы Примечание
Класс UIAlertView предназначено для использования как есть и не поддерживают подклассы. Иерархия представления для этого класса является частной и ее нельзя изменять.
Подклассовое примечание от UIAlertView
Apple documentation.
По сути это означает, что если вы используете метод addSubview:
на UIAlertView
тогда вы в суть изменения то, что Apple, как указано как частное и ваше приложение будет получить отклоненный от процесса в Apple App Review за правило 2.5.
2,5 приложения, использующие непубличных API, будут отклонены
Вы можете спросить себя, почему этот метод даже существуют, то для UIAlertView
, конечно, потому что его там мы можем использовать его.Ну NO причина, потому что класс UIAlertView
сам по себе является подклассом UIView
, в котором объявлен метод addSubview:
. К сожалению, нет причин, чтобы остановить экземпляр UIAlertView
от фактического вызова этого метода. Итак, что Apple сделала, они переопределили метод addSubview:
, и все, что он делает, возвращается. Таким образом, этот метод не делает ничего, и любые представления, которые вы передаете этому методу, никогда не будут добавлены, поскольку он никогда не вызывает [super addSubview:view];
.
Так что, когда дело доходит до UIAlertView
s есть две вещи, которые вы не должны делать и это:
ПодклассUIAlertView
как @interface MYAlertView : UIAlertView
это подклассов и не допускается.
Alter Просмотр иерархии как [alertView addSubview:view];
Однако есть один момент, который я должен сделать, в то время как мы не позволили создать подкласс UIAlertView
мы все еще разрешено делать категории для него, как @interface UIAlertView (MyCategory)
, так как это не классифицируется как подклассом, он известен как класс или расширение класса (я также слышал, что он назывался провайдером класса раньше).
Следует также отметить, что если вы разрабатываете для iOS8
и выше, вы должны использовать UIAlertController
, так как UIAlertView
устарел.
Важен:
UIAlertView осуждается в прошивке 8. (Обратите внимание, что UIAlertViewDelegate также не рекомендуется.) Для того, чтобы создавать и управлять предупреждениями в прошивке 8, а затем, вместо того, чтобы использовать UIAlertController с preferredStyle из UIAlertControllerStyleAlert.
Таким образом, я либо использовал бы один из пользовательских классов, упомянутых в других ответах, либо перешел на использование UIAlertController
, или если у вас есть время, чтобы создать собственное собственное предупреждение.
Я надеюсь, что это объяснение поможет вам разобраться UIAlertView
.
вам нужно использовать UIPopoverController вместо UIAlertView –
вы можете использовать customView для этого – crz