2015-06-02 31 views
2

我在通過代碼添加UITextField時遇到問題。當我使用內部空視圖控制器這個簡單的代碼都正常工作:當通過代碼添加UITextField時不起作用

let textField = UITextField(frame: CGRect(x: 10, y: 10, width: 200, height: 20)) 
textField.text = "test" 
scrollView.addSubview(textField) 

但是我的自定義UIScrollView由於某種原因,它裏面是不行的(編輯不啓動)。

我試圖設置userInteractionEnabledtextField也爲superview但這並沒有幫助。我不確定如何調試以查看哪些屬性阻止了編輯。沒有鍵盤彈出;我無法在模擬器中鍵入和/或進行選擇。另外奇怪的是,其他控件如UIButton的工作完美和接觸。

可以看出,我沒有添加委託,但它在沒有它的情況下在空的UIViewController上工作得非常好。

po textField.canBecomeFirstResponder()返回true。

+1

單擊textField並按下commnd + K. –

+0

鍵盤未顯示(通過Menu或CMD + K)。它表現得像完全禁用。你甚至不能點擊它。我開始擔心我的佈局以某種方式阻止它,但不知道如何調試它。順便說一句。控制在屏幕上完全可見。 – user3758317

+1

我認爲你的UIScrollView是「竊取」水龍頭手勢,並沒有進入UITextField – Icaro

回答

2

我讀​​,我覺得這一點:

如果此屬性的值爲true,滾動視圖延遲處理向下觸摸手勢,直到能夠確定滾動是 意圖。如果該值爲false,則滾動視圖立即調用 touchesShouldBegin:withEvent:inContentView :.默認值爲 true。

,這從apple documentation:withEvent:方法:

此方法通過調用 pointInside橫穿視圖層級中的每個子視圖的方法,以確定哪個子視圖 應該接收的觸摸事件。如果pointInside:withEvent: 返回true,則類似地遍歷子視圖的層次結構 ,直到找到包含指定點的最前面的視圖。如果一個 視圖不包含該點,則其視圖層次結構的分支 被忽略。

1

將scrollView.delaysContentTouches設置爲NO。

根據是否意外觸摸scrollView中的控件成爲問題,您可能必須提出自己的關閉/打開邏輯。

你也可以在不滾動的情況下點擊並按住textField。它應該調出鍵盤,但大多數用戶可能不知道這樣做。

+0

這不是問題在我的情況,但不知道這個屬性,我會更多地使用它。 – user3758317

相關問題