[英]How can I make IB create an action connection?
Xcode5的Interface Builder困擾着我一個非常令人沮喪的問題。 這是問題所在:
我有一個.xib文件,其中包含許多控件:
當我從這些控件中的任何一個控件拖動到與此.xib文件相對應的.h或.m文件時,我沒有創建操作的選項:
.xib文件的“ FilesOwner”已正確設置為“ MessageController”,這是.xib文件的ViewController。
這令人沮喪,因為此問題不僅發生在特定的.xib / VC對,而且發生在我項目中的所有文件中。 我已經清理並重建了項目,並關閉並重新打開了XCode,但是似乎沒有任何效果。
編輯:
閱讀您的評論后,我意識到我應該更加具體地嘗試做些什么。 在上面的屏幕截圖中,我選擇了UIScrollView,因為我覺得所有控件都能夠生成某些動作。 因此,這是我實際嘗試執行的操作的屏幕截圖:
我在這里犯同樣的初學者錯誤嗎? 我應該使用類似這樣的代碼而不是使用IB來分配此操作嗎:
[textView addTarget:self操作:@selector(textFieldDidChange :) forControlEvents:UIControlEventEditingChanged];
還有其他建議嗎?
謝謝!
就像注釋中指出的那樣,您無法對UIScrollView
進行任何操作。 如果您還遇到與UIButtons
, UITextFields
等可操作的UI對象有關的問題,請執行以下操作:
檢查以確保您為該xib文件(文件所有者)定義了正確的自定義類。
還要確保將助手編輯器的選擇設置為“自動”。
-addTarget:action:forControlEvents:
可以在UITextField
因為它繼承自UIControl
但不是繼承自UITextView
因為UITextView
不繼承自UIControl
,因此缺乏這種目標動作功能。
您必須使用UITextViewDelegate
並實現-textViewDidChange:
方法來執行相同的操作。
//1
//set delegate programmatically
[textView setDelegate:self];
//or via the IB: right-click drag UITextView to `File's owner`
//2
-(void)textViewDidChange:(UITextView *)textView
{
//something happened with the textView!!
}
PS:您可能希望將UITextView
對象重命名為簡單的textView
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.