簡體   English   中英

通過代碼添加時,UITextField不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM