Я недавно начал посещать онлайн-курс по разработке iPhone для Стэнфордского университета в iTunes U.
Сейчас я пытаюсь выполнить домашние задания для первой пары лекций. Я прошел через пошаговое руководство, где я построил базовый калькулятор, но сейчас я пытаюсь выполнить первое задание и, похоже, не могу его решить. Это следующее:
Ваш калькулятор уже работает с числами с плавающей запятой (например, если вы нажмете 3/4 =
он будет правильно показывать результирующее значение 0,75), однако для пользователя нет способа
ввести число с плавающей запятой. Исправьте это. Разрешить только допустимые числа с плавающей запятой
вводимые числа (например, «192.168.0.1» не является допустимым числом с плавающей запятой).
Прежде всего, я не уверен, считается ли число с плавающей точкой digitPressed
или operationPressed
. Я даже попробовал с новым методом floatingPointPressed
, но это не сработало. Может ли кто-нибудь предоставить указатели на это?
Когда я увидел его как digitPressed, я попробовал что-то вроде этого:
if (hasFloatingPoint) {
NSRange range = [[display text] rangeOfString:@"."];
if (range.location == NSNotFound)
{
[display setText:[[display text] stringByAppendingFormat:digit]];
hasFloatingPoint = YES;
}
}
else {
[display setText:[[display text] stringByAppendingFormat:digit]];
}
Но мне здесь не хватает ключевой концепции, я думаю.
Я также попробовал другое решение, которое я, к сожалению, уже отменил, поэтому я не могу предоставить код, но случилось следующее: я мог нажать число, скажем 5
, а затем с плавающей точкой и 3
так что я бы в итоге получил 5.3
. Затем мне удалось «отключить» число с плавающей запятой для оставшейся части ввода. Но я думаю, что я был слишком строг к этому: я не мог, например, вставить 5.3.2
, но после нажатия кнопки операции ( +
и т. Д.), Он все равно не позволит мне нажать кнопку с плавающей запятой. Думаю, мне следует сбросить бул, который я использовал для этого?
Я не ищу полностью выписанное здесь решение, но не мог бы кто-нибудь так любезно дать несколько основных советов о том, как решить эту проблему? Какой-то пошаговый обзор того, что я должен делать и думать, фактически не предлагая решения для кода.
Заранее спасибо.