سؤال

ولقد تم تحريك وجهة نظر في حالة تأهب أعلى قليلا حتى أتمكن من تناسب لوحة المفاتيح التي تظهر على الشاشة أيضا. أنا فقط القيام بذلك عن طريق الاستيلاء على إطار التنبيه وتغيير Y بعد لقد أظهر بالفعل التنبيه بحيث المتغيرات إطار شرعي. هذا يعمل بشكل جيد على جهاز محاكاة، ولكن عندما أفعل هذا على الأجهزة، والتنبيه يبدأ في الموضع الصحيح ولكن بعد ذلك على الفور تقريبا يقفز لانها الأصلي مكان مركز العمودي. هو موقف UIAlertView شيء الثابتة التي ليس من المفترض أن تتغير فقا للمبادئ التوجيهية الاستخدام أو أنا فقط تفعل شيئا غير صحيح؟

وشكرا!

هل كانت مفيدة؟

المحلول

وماذا OS تحاول هذه ضد؟ حصلت على هذا العمل على كل من محاكي OS 3.0 و OS 3.0 الجهاز:

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 يستغرق ثلاث حجج: الحالية تحويل، وهو العاشر تحويل، وذ تحويل. في المثال استعملتها، ظهرت وجهة نظر في حالة تأهب 100 بكسل أعلى من ذلك عادة. تعطي هذه محاولة ونرى ما سيحدث.

وأيضا، وأنا واثق جدا يمكنك تعديل الإطار قبل تبين حالة تأهب كما أنه من المرجح يضع إطار التنبيه في init ليكون مركز الشاشة بأكملها افتراضيا.

نصائح أخرى

ومنذ نظام التشغيل iOS4 يتحرك UIAlertViews يحصل صعبة. لقد لاحظت أنه إذا قمت بإضافة subview UITextField على UIAlertView، على نظام التشغيل iOS4 التنبيه يحصل تحرك حتى أن لوحة المفاتيح لا تتداخل ذلك. هذا لا يحدث <نظام التشغيل iOS4.

وأيضا لقد لاحظت هذا الإطار على التنبيه لم يتم تهيئة حتى بعد ما يسمى العرض، لذلك لا توجد وسيلة سهلة programatic من القيام CGAffineTransformation قريب. والحل الوحيد هو القيام التحويلات المشروطة على أساس إصدار نظام التشغيل.

للي هذا يبدو وكأنه خيوط على السلوك غير الشرعيين من UIAlertViews التي هي عرضة للتغيير في أي وقت. لا أعتقد أن أبل يعني بالنسبة لنا أن يكون استخدام تنبيهات عن أي شيء أكثر من النصوص والأزرار (على الرغم من التطبيقات الخاصة بها كسر هذه القاعدة).

وأنا واحد سوف البدء في بناء بلدي التنبيهات المخصصة الخاصة لهذا النوع من السيناريوهات.

وأليس تنبيه يعني أن تكون مشروط - أي: لا تفعل عادة أداء أي إدخال المستخدم الآخر بينما تنبيه نشط؟ إذا كان هذا هو الحال فلماذا تحتاج تسليط الضوء على لوحة المفاتيح؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top