щелчок по строке поиска не вызывает клавиатуру (iOS Swift)

Я новичок в Swift, извините за простой вопрос.

Я думаю, что не прикрепил правильные события для своей панели поиска, так как когда я нажимаю на нее, клавиатура не появляется.

В раскадровке я почти уверен, что мне нужно установить выход для делегата UISearchBar, чтобы он был контроллером представления. Но из этого снимка экрана видно, что делегат просто view. этот скриншот

Вот мой файл viewController.swift, может кто-нибудь помочь найти ошибку?

//
//  ViewController.swift
//  PhotoSearchExample
//
//  Created by Tim Peterson on 10/30/14.
//  Copyright (c) 2014 Tim Peterson. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UISearchBarDelegate {

    @IBOutlet weak var scrollView: UIScrollView!

    //@IBOutlet weak var searchString: UISearchBar!

    let instagramClientID = "xxxx"

    func searchInstagramByHashtag(searchString: String) {
        for subview in self.scrollView.subviews {
            subview.removeFromSuperview()
        }

        let instagramURLString = "https://api.instagram.com/v1/tags/" + searchString + "/media/recent?client_id=" + instagramClientID

        let manager = AFHTTPRequestOperationManager()

       self.scrollView.alpha = 0.0

        let activityIndictorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
        activityIndictorView.center = self.view.center
        self.view.addSubview(activityIndictorView)
        activityIndictorView.startAnimating()

        manager.GET( instagramURLString,
            parameters: nil,
            success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
                println("JSON: " + responseObject.description)

                if let dataArray = responseObject.valueForKey("data") as? [AnyObject] {
                    self.scrollView.contentSize = CGSizeMake(320, CGFloat(320*dataArray.count))
                    for var i = 0; i < dataArray.count; i++ {
                        let dataObject: AnyObject = dataArray[i]
                        if let imageURLString = dataObject.valueForKeyPath("images.standard_resolution.url") as? String {
                            println("image " + String(i) + " URL is " + imageURLString)



                            let imageView = UIImageView(frame: CGRectMake(0, CGFloat(320*i), 320, 320))
                            self.scrollView.addSubview(imageView)
                            imageView.setImageWithURL( NSURL(string: imageURLString))

                            activityIndictorView.stopAnimating()

                            UIView.animateWithDuration(1.0, animations: {
                                self.scrollView.alpha = 1.0
                                }, completion: {
                                    (value: Bool) in
                                    println("Animation complete!")
                            })

                        }
                    }
                }
            },
            failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
                println("Error: " + error.localizedDescription)
        })
    }

    func searchBarSearchButtonClicked(searchBar: UISearchBar!) {

        //println("search bar clicked!")

        searchBar.resignFirstResponder()
        searchInstagramByHashtag(searchBar.text)
    }

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

        searchInstagramByHashtag("clararockmore")
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

person tim peterson    schedule 01.11.2014    source источник


Ответы (1)


Вы на правильном пути, Тим - кажется, вы каким-то образом настроили свой вид как делегат вашей панели поиска, а не как контроллер представления. Я бы порекомендовал:

  1. Удалите подключение в инспекторе подключений.
  2. Откройте схему документа в конструкторе интерфейсов (кнопка в левом нижнем углу конструктора интерфейсов).
  3. Теперь яснее, к чему именно вы перетаскиваете — управляйте перетаскиванием из панели поиска прямо в ViewController, выберите делегата, и вы должны увидеть, как он правильно отображается в инспекторе подключений.
person Craig Grummitt    schedule 01.11.2014
comment
это идеально, спасибо! Хорошо, функция поиска теперь работает, но клавиатура никогда не появляется. searchBar.resignFirstResponder() на своем месте? - person tim peterson; 01.11.2014
comment
Как может работать функция поиска, если вы говорите, что клавиатура никогда не появляется? О, вы, наверное, в симуляторе, вводите поиск с помощью клавиатуры компьютера. Если да, то в меню симулятора отключите «Оборудование», «Клавиатура», «Подключить аппаратную клавиатуру» — или просто просмотрите на своем устройстве! - person Craig Grummitt; 02.11.2014
comment
Да, я был в симуляторе. Еще раз спасибо за ответ! - person tim peterson; 02.11.2014