2015-07-28 81 views
0

我無法用幾句話來描述它。當我觸摸按鈕時,如何做只有一件事?

@IBOutlet weak var ClubIntro: UILabel! 
@IBOutlet weak var DetailButton: UIButton! 
override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


@IBAction func TouchDown(sender: AnyObject) { 
    if DetailButton.titleLabel?.text == "收回"{ 
     ClubIntro.numberOfLines = 5 
     DetailButton.titleLabel?.text = "展開" 
    } 
    else { 
     ClubIntro.numberOfLines = 0 
     DetailButton.titleLabel?.text = "收回" 
    } 
} 

這是我的code.I認爲很容易知道我想要做什麼。

但是這段代碼沒有給出我想要的結果。

按鈕的文字是「收回」默認值,而且標籤的numberoflines是0

所以,當我接觸下來button.It會第一IF文並更改按鈕的標題文字爲「展開」和標籤的numberoflines爲5.

但由於觸摸的持續時間很長,然後在持續時間內,功能TouchDown將被再次調用,然後將值更改回來。

我曾經想過暫停句子,但它只能在循環中使用。

那麼,如何在完成第一個IF語句時退出函數TouchDown?

+0

您可以使用'TouchUpInside'而不是'TouchDown'。 – Akhilrajtr

+0

這很奇怪..你試圖按CTRL-從你的按鈕拖動到你的代碼(從storyboard),並將連接設置爲'Action',並將你的代碼放在XCode創建的方法中嗎? – Nerkyator

+0

是的,我做了,功能TouchDown這是我通過故事板創建的方法。它的事件是TouchUpInside – Hashira

回答

2

第一個問題: - 你做錯了!您應該捕獲此事件: -

UIControlEventTouchUpInside 

控件中的觸摸事件,其中手指位於控件的邊界內。

問題二: -

我遲到檢測到它,它已經回答之前: -

您沒有設置按鈕標題正確。

這應該是這樣: -DetailButton.setTitle("Button Title", forState: UIControlState.Normal)

+0

不,我第一次嘗試過這種行爲,但結果是一樣的。然後我嘗試新的動作TouchDown – Hashira

+0

仍然沒有得到你的觀點!您是否嘗試使用UIControlEventTouchUpInside來捕捉動作?如果是這樣更新你的代碼。 – Vizllx

+0

它使用的是UIContolEventTouchUpInside,但Action名稱是TouchDown。 – Hashira

1

創建UIControlEventTouchUpInside

@IBAction func TouchUpInside(sender: AnyObject) { 

let button = sender as UIButton 
if button.titleLabel?.text == "收回"{ 
    ClubIntro.numberOfLines = 5 
    sender.setTitle("展開", forState: UIControlState.Normal) 
} 
else { 
    ClubIntro.numberOfLines = 0 
    sender.setTitle("收回", forState: UIControlState.Normal) 
}} 
0

首先,你應該設置UIControlEventTouchUpInside爲您控制的事件標誌,以便該按鈕會發現什麼樣的行動應該觸發該方法。此外,我們不確定這是否是您的預期行爲,您應該始終查找文檔以找到您渴望的常數標誌。

在代碼中,你可以在代碼中設置或Ctrl +拖動從廈門國際銀行文件這樣的事情然後選擇TouchUpInside

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

因爲我能讀中國人,我覺得有什麼不對您的邏輯是什麼?你應該明白,分配0到numberOfLines實際上並不是將它作爲0行。這意味着它會根據UILabel的實際內容自動擴展。

+0

不,這裏沒有錯誤的邏輯。我通過使用settitle方法來更改按鈕的標題,而不是直接爲標題標籤分配字符串,從而解決了問題。 – Hashira

+0

好的,只要你知道將0賦給'numberOfLines'實際上是在自動調整大小的。 –

+0

是的。所以當我的代碼做的是當展開按下然後將numberoflines設置爲0來自動調整標籤的大小,然後當收到按鈕時它將設置爲5讓標籤只有5行 – Hashira

相關問題