2009-06-24 7 views
6

मैं एक चेतावनी दृश्य थोड़ा अधिक आगे बढ़ रहा हूं इसलिए मैं स्क्रीन पर एक कीबोर्ड भी फिट कर सकता हूं। मैं चेतावनी के फ्रेम को पकड़कर और वाई को बदलकर ऐसा करता हूं, मैंने पहले ही अलर्ट दिखाया है ताकि फ्रेम चर वैध हो। यह सिम्युलेटर पर ठीक काम करता है, लेकिन जब मैं हार्डवेयर पर ऐसा करता हूं, तो अलर्ट सही स्थिति पर शुरू होता है लेकिन फिर लगभग तुरंत इसके मूल लंबवत केंद्र स्थान पर कूद जाता है। क्या UIAlertView एक निश्चित चीज है जो उपयोगिता दिशानिर्देशों के अनुसार परिवर्तित नहीं होना चाहिए या क्या मैं कुछ गलत तरीके से कर रहा हूं?क्या मैं UIAlertView को स्थानांतरित कर सकता हूं?

धन्यवाद!

उत्तर

22

आप किस ओएस के खिलाफ यह कोशिश कर रहे हैं?

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
         delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ]; 

alert.transform = CGAffineTransformTranslate(alert.transform, 0.0, 100.0); 

[ alert show ]; 

CGAffineTransformTranslate तीन तथ्य होते हैं:: परिणत मौजूदा, एक एक्स को बदलने, और एक y बदलने मैं इस दोनों OS 3.0 सिम्युलेटर और OS 3.0 डिवाइस पर काम करने के लिए मिला है। उदाहरण के लिए मैंने इस्तेमाल किया, चेतावनी दृश्य सामान्य रूप से 100 पिक्सेल से अधिक दिखाई देता था। इसे आज़माएं और देखें कि क्या होता है।

इसके अलावा, मुझे यकीन है कि आप अलर्ट दिखाने से पहले फ्रेम को संशोधित कर सकते हैं क्योंकि यह डिफ़ॉल्ट रूप से पूरी स्क्रीन का केंद्र होने के लिए init में अलर्ट के फ्रेम को सेट करता है।

+0

धन्यवाद ट्रांसफॉर्म ने चाल की है, कुछ कारणों से फ्रेम निर्देशांक का उपयोग करके इसे हल करना मुद्दा था। – Skyler

+0

यह आईओएस 3.0 में भी मेरे लिए काम करता है, लेकिन किसी कारण से यह आईओएस 4.0 में काम नहीं करता है .... –

1

modal होने का मतलब कोई चेतावनी नहीं है - यानी: अलर्ट सक्रिय होने पर आप आमतौर पर कोई अन्य उपयोगकर्ता इनपुट नहीं करेंगे? यदि ऐसा है तो आपको कीबोर्ड की दृश्यता क्यों चाहिए?

+3

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

+0

टिप्पणी के लिए धन्यवाद - मैंने उस परिदृश्य के बारे में सोचा नहीं था। – teabot

2

चूंकि आईओएस 4 यूआईएलर्टव्यू के आसपास घूमता मुश्किल हो जाता है। मैंने देखा है कि अगर आप UIAlertView पर UITextField सबव्यूव जोड़ते हैं, तो IOS4 पर अलर्ट ऊपर ले जाया जाता है ताकि कीबोर्ड इसे ओवरलैप न कर सके। यह < आईओएस 4 नहीं होता है।

मैंने यह भी देखा है कि शो के नाम के बाद भी अलर्ट का फ्रेम प्रारंभ नहीं किया गया है, इसलिए रिश्तेदार CGAffineTransformation करने का कोई आसान प्रोग्रामिक तरीका नहीं है। एकमात्र समाधान ओएस संस्करण के आधार पर सशर्त परिवर्तन करना होगा।

मेरे लिए यह UIAlertViews के अनियंत्रित व्यवहार पर थ्रेडिंग जैसा दिखता है जो किसी भी समय परिवर्तन के अधीन है। मुझे नहीं लगता कि ऐप्पल हमारे लिए ग्रंथों और बटनों से अधिक कुछ के लिए अलर्ट का उपयोग करने के लिए था (भले ही उनके स्वयं के अनुप्रयोग इस नियम को तोड़ दें)।

मैं एक के लिए इस प्रकार के परिदृश्यों के लिए अपने स्वयं के कस्टम अलर्ट बनाना शुरू कर दूंगा।