2011-12-31 75 views
0

我不知道這段代碼有什麼問題;當我開始在UITextView中輸入時,程序以exc_Bad_Access異常終止。在UITextView中輸入時出現bad_Access異常

UIView *toolbar = [[UIView alloc] initWithFrame:CGRectMake(0, 430, 320, 44)]; 
toolbar.backgroundColor = [UIColor lightGrayColor]; 
UITextView *sendTextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 9, 240, 26)]; 
sendTextView.backgroundColor = [UIColor whiteColor]; 
sendTextView.inputAccessoryView = toolbar; 
sendTextView.layer.cornerRadius = 12.0; 
[toolbar addSubview:sendTextView]; 
[self.view addSubview:toolbar]; 

上面的代碼是一個UIViewController的viewDidLoad方法,其具有一個UIScrollView作爲其視圖內。

回答

0

將可編輯的文本視圖放在工具欄中似乎很奇怪。 (當用戶想要編輯它時,你會做什麼?將它移到鍵盤上方?我不希望工具欄移動或包含可編輯字段。)但是,如果這樣做會導致EXC_BAD_ACCESS,我會感到很驚訝。

您的問題更可能出現在您鍵入時實際運行的代碼中,例如文本視圖委託方法之一。如果在那裏找不到任何東西,請在崩潰時發佈堆棧跟蹤,並在當時實際運行的方法代碼。

更新:後,您在您的評論指出了這一點,我看到你設置工具欄作爲輸入附件視圖sendTextView其添加到視圖控制器的看法。我猜想這裏發生的事情是,當你開始編輯文本視圖時,文本視圖將工具欄添加到鍵盤的視圖中,而不必先從視圖控制器視圖中刪除它。給定視圖一次只能是一個視圖層次結構的一部分;將其添加到您的視圖使用它作爲輸入附件視圖將不起作用。如果您查看Apple's sample code for using an accessory view,您會發現用作附件的視圖不是普通視圖層次結構的一部分。

+0

因爲工具欄(實際上是一個UIView)是textView的inputAccessoryView,當textView激活時它會在鍵盤上方移動,就像Messages iPhone應用程序一樣。 – 2011-12-31 09:04:57

+0

對 - 我錯過了你們都將工具欄設置爲輸入附件視圖*和*將它添加到視圖。一個視圖只能有一個父視圖,但它不能同時屬於兩個視圖層次結構的一部分,所以如果您想將其用作視圖控制器視圖的子視圖,則不要將其添加爲視圖控制器視圖的子視圖。如果你想要兩個,我想你會需要兩個工具欄。 – Caleb 2011-12-31 13:40:22

+0

我下載了Apple的KeyboardAccessory項目並在xcode中運行它,但是一旦我開始在textView中輸入時,就會顯示相同的錯誤。我有xcode 4.2 Build 4D199 – 2012-01-02 05:52:39

相關問題