0
我正在學習針對iOS的Objective-C編程,並且遇到了一個小問題。我正在構建一個基本的RPN計算器,我正在努力讓用戶可以輸入浮點數。但是,我需要防止他們輸入非法的浮點數(如1324.343.34)。我試着添加一個BOOL和一個if語句,但它太亂了,所以我只是添加了一個單獨的動作,如果他們按下「。」。不幸的是,儘管decimalPressed操作是第二次,它仍然在數字按下操作之前,我需要它後去。有任何想法嗎?如何在Cocoa Touch中優先考慮一個動作(讓它先行)
- (IBAction)digitPressed:(UIButton *)sender
{
NSString *digit = [sender currentTitle];
if (self.userIsInTheMiddleOfEnteringANumber) {
if (self.dotPressed == NO || ([digit isEqualToString:@"."]==NO)) {
self.display.text = [self.display.text stringByAppendingString:digit];
self.dotPressed = NO;
}
} else {
self.display.text = digit;
self.userIsInTheMiddleOfEnteringANumber = YES;
}
}
- (IBAction)decimalPressed:(UIButton *)sender {
self.dotPressed = YES;
}
這將工作,謝謝。但我覺得它只是繞過這個問題,而這更像是一個學習問題。就像,如果一個按鈕轉到兩個動作(或3,4等),我該如何選擇它到底是哪個? – Acoustic77
我會假設它會按照您添加目標/操作的順序調用它們。如果你使用Interface Builder,我建議刪除你的UI和按鈕之間的連接,並嘗試使用UIButton的代碼添加它們: - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents) controlEvents;希望有所幫助! –
是的,我試圖打破連接,並按照我希望它們運行的順序添加它們,但沒有成功。我只是改變了行動完成的任務,這解決了問題,但我仍然沒有學會如何去做我想要的事。 – Acoustic77