Спасибо, Бленк, я пытался понять, как это сделать, и не осознавал, что могу поставить кнопку на заднем плане, хороший трюк! Вот мой вклад (новичок в этом сайте и в Cocoa Touch, так что он, возможно, не самый надежный код когда-либо, но он пока работает ...):
Я вызываю этот метод из события touchUpInside
в my UIButton:
-(void)closeKeyboard:(id)sender {
UIView *theFirstResponder = [self findFirstResponder];
if (theFirstResponder) {
[theFirstResponder resignFirstResponder];
}
}
Где этот цикл находит firstResponder:
- (UIView *)findFirstResponder {
UIView *firstResponderView = nil;
for (UIView *view in [self entryFields]) {
if ([view isFirstResponder]) {
firstResponderView = view;
break;
}
}
return firstResponderView;
}
Он зависит от каждого элемента управления UITextField
в представлении, имеющего тег назначенный им (опять же, это можно сделать в Интерфейсном Разработчике).
Мои два цента в любом случае, хотя я бы лучше что-нибудь вернуть!
В обратных передачах нет ничего постыдного, и вы действительно не можете избежать обратных передач потому что это самый простой способ сохранить данные в HTTP-запросах. Это или параметры запроса, которые являются еще одним циклом обращения к серверу, так что это то же самое с некоторыми компромиссами. Не рекомендуется использовать состояние просмотра или сеансы.
В идеале одна и та же страница будет проверять, является ли запрос обратной связью, и обрабатывать всю логику, содержащуюся в нем. Так что чаще всего ваш код или страницы приложения с формами будут иметь раздел для обработки сообщения обратно.
Идея 2 не подходит. Это ужасная идея, и в ней нет необходимости. AJAX хорош, но не переусердствуйте. Не говоря уже о том, что насчет этой части пользователей с отключенным Javascript?
Я думаю, что вы думаете (не зная об этом), это шаблон Post / Redirect / Get . Когда дело доходит до этого, это лучшая практика, и вы должны ей следовать. В основном, как вы сказали, вы никогда не отвечаете на POST ничем, кроме перенаправления. Что касается уведомлений, в большинстве случаев вы знаете , откуда они приходят, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса.
Мы думаем (даже не подозревая об этом) о шаблоне Post / Redirect / Get . Когда дело доходит до этого, это лучшая практика, и вы должны ей следовать. В основном, как вы сказали, вы никогда не отвечаете на POST ничем, кроме перенаправления. Что касается уведомлений, в большинстве случаев вы знаете , откуда они приходят, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса. Мы думаем (даже не подозревая об этом) о шаблоне Post / Redirect / Get . Когда дело доходит до этого, это лучшая практика, и вы должны ей следовать. В основном, как вы сказали, вы никогда не отвечаете на POST ничем, кроме перенаправления. Что касается уведомлений, в большинстве случаев вы знаете , откуда они приходят, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса. Когда дело доходит до этого, это лучшая практика, и вы должны ей следовать. В основном, как вы сказали, вы никогда не отвечаете на POST ничем, кроме перенаправления. Что касается уведомлений, в большинстве случаев вы знаете , откуда они приходят, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса. Когда дело доходит до этого, это лучшая практика, и вы должны ей следовать. В основном, как вы сказали, вы никогда не отвечаете на POST ничем, кроме перенаправления. Что касается уведомлений, в большинстве случаев вы знаете , откуда они приходят, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса. большую часть времени вы знаете , откуда они, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса. большую часть времени вы знаете , откуда они, из-за определенного действия. Если вы этого не сделаете, HTTP REFERER - достойная альтернатива. Да, его можно отключить, но это ~ 1% ваших пользователей, если что. Что касается уведомлений, для этого идеально подходят сеансы. Просто сохраните код и сообщение в текущем сеансе и сделайте так, чтобы ваш шаблон знал о них. Распечатайте сообщение, если оно существует, и удалите переменные сеанса.