CS193P - Добавление кнопки с плавающей запятой в калькулятор iOS

Недавно я начал следить за онлайн-курсом по разработке iPhone от Стэнфордского университета на iTunes U.

Сейчас я пытаюсь делать домашние задания для первой пары лекций. Я прошел через пошаговое руководство, в котором я построил базовый калькулятор, но теперь я пытаюсь выполнить первое задание и, похоже, не могу его решить. Это выглядит следующим образом:

Ваш калькулятор уже работает с числами с плавающей запятой (например, если вы нажмете 3/4 = он правильно покажет результирующее значение 0,75), однако для пользователя нет возможности для ввода числа с плавающей запятой. Исправьте это. Разрешить только допустимую плавающую точку числа, которые нужно ввести (например, «192.168.0.1» не является допустимым числом с плавающей запятой).

Прежде всего, я не уверен, считается ли число с плавающей запятой как digitPressed или operationPressed . Я даже пробовал использовать новый метод, названный floatPointPressed , но это не сработало. Может ли кто-нибудь указать на это?

Когда я увидел это как 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 , но после нажатия кнопки управления ( + и т. д.) он все равно не позволял мне нажимать кнопку с плавающей запятой. Полагаю, мне следует сбросить логическое значение, которое я использовал для этого?

Я не ищу здесь полностью написанного решения, но может ли кто-нибудь быть настолько любезным, чтобы дать базовый совет, как решить эту проблему? Какой-то пошаговый обзор того, что я должен делать и о чем думать, без фактического предоставления кода решения.

Заранее спасибо.

7
задан cabaret 18 June 2011 в 12:29
поделиться