[英]UITextField doesn't work when added via code
我在通過代碼添加UITextField時遇到問題。 當我在空視圖控制器中使用此簡單代碼時,所有工作正常:
let textField = UITextField(frame: CGRect(x: 10, y: 10, width: 200, height: 20))
textField.text = "test"
scrollView.addSubview(textField)
但是由於某種原因,在我的自定義UIScrollView
內部將無法正常工作(無法開始編輯)。
我試圖為textField
和superview設置userInteractionEnabled
,但這無濟於事。 我不確定如何調試以查看哪個屬性正在阻止編輯。 沒有鍵盤彈出。 我無法在模擬器中輸入和/或進行選擇。 奇怪的是,其他控件(例如UIButton)可以完美工作並獲得觸摸。
可以看出,我沒有添加委托,但是沒有它,它可以在空的UIViewController上很好地工作。
po textField.canBecomeFirstResponder()
返回true。
我在閱讀Apple文檔 ,發現了這一點:
如果此屬性的值為true,則滾動視圖會延遲處理觸地手勢,直到可以確定滾動是否是意圖。 如果值為false,則滾動視圖立即調用touchesShouldBegin:withEvent:inContentView:。 默認值是true。
而這來自蘋果文檔 :
此方法通過調用每個子視圖的pointInside:withEvent:方法來遍歷視圖層次結構,以確定哪個子視圖應接收觸摸事件。 如果pointInside:withEvent:返回true,則類似地遍歷子視圖的層次結構,直到找到包含指定點的最前面的視圖。 如果視圖不包含該點,則將忽略其視圖層次結構的分支。
將scrollView.delaysContentTouches設置為NO。
您可能需要提出自己的邏輯來關閉/打開它,這取決於是否意外觸摸scrollView內部的控件會引起問題。
您也可以點擊並按住textField而不滾動。 它應該調出鍵盤,但是大多數用戶可能不知道這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.