2015-10-28 15 views
0

就來橫在設備一個奇怪的錯誤與32位架構的工作, 下面是代碼:分配NSUInteger到UIButton的enabled屬性不設備用32位架構

- (void)textViewDidChange:(UITextView *)textView { 
    self.button.enabled = textView.text.length; 
} 

所以每當我粘貼一些文字,其長度不爲1到TextView的, (這是模仿第三方鍵盤Sogou的行爲),該按鈕將不會啓用。

您可以使用此Demo重現bug。

我讀過相關的職位,如Assigning NSUInteger to BOOL conceptual understanding,但這種情況是不同的。

請告訴我爲什麼不在這裏工作了。

回答

0

不要認爲它是一個錯誤。把它看作你的代碼錯了。這條線是可怕的:

self.button.enabled = textView.text.length; 

你正在嘗試誤用一個數字作爲BOOL。因此,我們假定你是任何非零數字是一樣的YES。這是一個錯誤的假設。停止編寫這樣的代碼。寫這樣的:

self.button.enabled = (textView.text.length > 0); 

這樣一來,BOOL真的一個BOOL。