2015-04-28 7 views
24

मैं अपनी खोजबार को तेज़ी से बनाने की कोशिश करता हूं, लेकिन जब मुझे सर्चबार से दबाया जाता है तो मुझे स्क्रीन पर कीबोर्ड को खारिज करने में समस्या होती है। जब मैं टेक्स्टफील्ड के साथ प्रयास करता हूं तो यह इस कोड के साथ पूरी तरह से ठीक काम करता है।जब मैं स्विफ्ट पर खोजबार से बाहर दबाता हूं तो कुंजीपटल खारिज कैसे करें?

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     self.view.endEditing(true) 
    } 

यह काम करता है जब मैं अपने टेक्स्टफील्ड से बाहर दबाता हूं और फिर कीबोर्ड चला जाता है। मैं अपनी खोजबार के साथ ऐसा करना चाहता हूं, क्योंकि जब मैं सर्चबार का उपयोग करता हूं और टेक्स्टफील्ड की तरह उसी तरह उपयोग करता हूं, तो यह बिल्कुल काम नहीं करता है। कोई संदर्भ या कोड मेरे लिए बहुत उपयोगी है।

+0

आप नीचे दिए गए लिंक में उत्तर मिल सकता है: http://stackoverflow.com/questions/24908966/hide-keyboard-for-text-field-in-swift-programming-language –

+0

मैं कि इतने कोशिश की थी मुझे टेक्स्टफील्ड के लिए अपना कोड मिलता है और यह मेरे जैसा कहता है, लेकिन मुझे कुछ समस्या है जब मुझे सर्चबार का उपयोग करना पड़ता है, क्योंकि जब मैं अपनी सर्चबार के बाहर किसी अन्य क्षेत्र को स्पर्श करता हूं तो मैं अपना कीबोर्ड खारिज नहीं कर सकता – aji

उत्तर

36

इस प्रयास करें:

self.mySearchController.searchBar.endEditing(true) 

आप प्रोग्राम यह नहीं बनाया था अपने बनाया नियंत्रक नाम के साथ mySearchController की जगह .. लेकिन इसके बजाय आप बस तो पुस्तकालय से एक खोज पट्टी घसीटा IBOutlet अपने अपने वर्ग और संदर्भ को खोजा यह के रूप में:

self.mySearchBar.endEditing(true) 
+0

क्या आप मुझे दे सकते हैं कोई भी सुराग मेरी खोजबार के बाहर क्लिक पर ईवेंट कैसे प्राप्त करें, क्योंकि जब मैं टेक्स्टफील्ड का उपयोग करता हूं, तो मैं फ़ंक्शन का उपयोग करता हूं जैसे कि मैंने पहले लिखा था और जब मैं अपने टेक्स्टफील्ड के बाहर क्लिक करता हूं तो यह ईवेंट प्राप्त करने के लिए स्वचालित रूप से काम करता है। क्या आप मुझे खोजबार – aji

+0

में ऐसा करने में मदद कर सकते हैं क्या आपने इसे लाइब्रेरी से अपने स्टोरीबोर्ड पर खींच लिया है या इसे कक्षा के अंदर से बनाया है ..? –

+0

मैंने इसे अपने स्टोरीबोर्ड – aji

4
func searchBarSearchButtonClicked(searchBar: UISearchBar) { 

     searchActive = false; 
     searchProject.resignFirstResponder() 
    } 

इस विधि द्वारा सक्रिय किया जाएगा जब keyboard.So पर उपयोगकर्ता क्लिक खोज बटन यहाँ हम कश्मीर खारिज कर सकते हैं eyboard. मुझे लगता है कि यह सही तरीका है।

10

परीक्षण और काम कर रहा है!

func searchBarSearchButtonClicked(searchBar: UISearchBar) 
{ 
    searchActive = false; 
    self.mySearchBar.endEditing(true) 
} 
0

हम एप्पल के UISearchBarDelegate कीबोर्ड छिपाने के लिए जब उपयोगकर्ता खोज बटन क्लिक करें, जबकि UISearchBar के उदाहरण first responder है सही समाधान है निम्न विधियों

func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 
     searchBar.showsCancelButton = true; 
    } 

    func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
     searchBar.showsCancelButton = false; 
    } 
1

सबसे पहले के साथ ऐसा कर सकते हैं, (सीखना UIResponder)। संक्षेप में, searchBarSearchButtonClicked(_:) आपको इस कार्य के लिए आवश्यक है।

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.resignFirstResponder() // hides the keyboard. 
    doThingsForSearching() 
} 

यह काम नहीं करता है की जाँच करें, अपने नियंत्रक UISearchBarDelegate का पालन करती है और दूसरी, UISearchBarDelegate अपनी कक्षा कार्यान्वयन के बारे में पता है (यदि आप काफी समझ में नहीं आता कि मैं क्या बात कर रहा हूँ, आप delegation pattern सीखना चाहिए here पढ़ने के लिए) शुरू करने:

class YourAwesomeViewController: UIViewController, UISearchBarDelegate { // pay attention here 

    @IBOutlet weak var yourSearchBar: UISearchBar! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.yourSearchBar.delegate = self // and it's important too 
    } 
} 

इसके अलावा, यदि आप खोज बटन स्पर्श किए बिना (search bar के कीबोर्ड छू बाहर छिपाने की आवश्यकता उपयोगकर्ता मई चांग कुछ खोजने के लिए उसका दिमाग), UITapGestureRecognizer इससे निपटने के लिए भी एक आसान तरीका है।

  1. Ctrl-drag अपने दृश्य नियंत्रक करने के लिए एक Tap Gesture RecognizerObject Library से।

enter image description here

  1. Ctrl-drag हाल ही में Tap Gesture Recognizerdocument outline से स्टोरीबोर्ड में अपने वर्ग कार्यान्वयन के लिए IBAction के रूप में जोड़ा।

enter image description here

  1. अंत में, एक कोड लिखने:

@IBAction func tapToHideKeyboard(_ sender: UITapGestureRecognizer) { self.yourSearchBar.resignFirstResponder() }

इसके अलावा, के लिए@IBOutlet बनाने के लिए मत भूलना खोज कक्षा को आपके वर्ग कार्यान्वयन के अंदर पहुंच प्राप्त करने के लिए।

उपरोक्त दोनों प्रकार मेरे प्रोजेक्ट में अच्छी तरह से काम करते हैं।

0
class MaCaveViewController: UIViewController, UISearchBarDelegate { 

    @IBOutlet weak var SearchBar: UISearchBar! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     SearchBar.delegate = self 
    } 

    // When button "Search" pressed 
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar){ 
     print("end searching --> Close Keyboard") 
     self.SearchBar.endEditing(true) 
    } 
} 

यह मेरे लिए बहुत अच्छा काम करता है।

संबंधित मुद्दे

 संबंधित मुद्दे