ios - UITextField 添加到 UIView 时不响应触摸事件

标签 ios iphone swift uiview uitextfield

我有一个 UITextField 问题,当它添加到 ContainerView 时,它不响应触摸事件。当我尝试将 UITextField 添加到主 UIViewController 时,它似乎很好并且有响应(键盘正在显示)。

我尝试将 subview 放在前面,在 ContainerView 上启用用户交互 - 没有任何帮助。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.scrollView = UIScrollView()
    self.containerView = UIView()

    self.scrollView.delegate = self
    self.containerView.userInteractionEnabled = true

    self.scrollView.addSubview(containerView)
    self.view.addSubview(scrollView)

    registerForKeyboardNotifications()
    setupGesturesAndMap()
    setupActivityIndicator()
    setupCircleButton()
    setupBrowseTextField()

    // Initializing status
    status = Status.Init
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    scrollView.frame = self.view.bounds
    containerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)
}

还有一个函数负责 browserTextField 的设置:

func setupBrowseTextField() {

    // Setup of browseTextField
    browseTextField = UITextField(frame: CGRectMake(10, self.view.frame.height / 2, self.view.frame.width - 20, self.view.frame.height / 12))
    browseTextField.placeholder = "Enter your destination here"
    browseTextField.font = UIFont.systemFontOfSize(15)
    browseTextField.borderStyle = UITextBorderStyle.RoundedRect
    browseTextField.autocorrectionType = UITextAutocorrectionType.No
    browseTextField.keyboardType = UIKeyboardType.Default
    browseTextField.returnKeyType = UIReturnKeyType.Done
    browseTextField.clearButtonMode = UITextFieldViewMode.WhileEditing
    browseTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.Center
    browseTextField.delegate = self

    containerView.addSubview(browseTextField)
}

你们有什么建议吗?

最佳答案

我看到你已经将containerView的框架设置为

containerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)

scrollView.contentSize.width为0。

这可以解决您的问题。

containerView.frame = self.view.bounds

您还可以通过scrollView的框架大小给出containerView的大小

containerView.frame = CGRectMake(0, 0, scrollView.frame.width, scrollView.frame.height)

关于ios - UITextField 添加到 UIView 时不响应触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159031/

相关文章:

ios - AF网络 : Handling of asynchronous get request with AFJSONRequestOperation

ios - 有哪些选项可以为重定向到网站的 iPhone 创建 shell 应用程序?

swift - Alamofire:将 Jpg 上传到 OSX 中的网络服务

swift - UIImage 调整大小扩展

ruby-on-rails - 使用 Phonegap 作为 Rails 3 应用程序的本地容器

java - IOS应用程序从MySql数据库获取数据

iphone - 在表格 View 中使用附件复选标记

iphone - AVAudioPlayer可以在iPhone上播放短声音吗?

swift - 如何在 Swift 4 中映射我的 Firebase 快照?

iphone - 用memcpy反转字节序