2014-11-13 3 views
1

Я пытаюсь поместить два текстовых поля в одну строку внутри UIAlertController (ранее UIAlertView), чтобы создать входы для телефонных номеров - один для кода страны и один для числа (мне нужно их разделить). Можно ли сделать это? Быстрые ответы будут оценены. :)Возможно ли вставить два текстовых поля в одну строку внутри UIAlertController

That is what I want to achieve

+0

UIAlertView устарел в iOS 8.0, а с тех пор компания Apple вводит UIAlertController. Было бы лучше создать собственный пользовательский вид, чем взломать UIAlertView, который может сломаться в будущих версиях iOS. – Rick

+0

Я знаю, что UIAlertView устарел. Я использую UIAlertController. Виноват. –

+0

@ Хайли Гийо - Извините, но можете ли вы сказать мне, является ли «U» гласным или нет? Что-то подсказывает мне, что ваша коррекция может быть неправильной. –

ответ

2

Так что это мой кусочек Swift. Меня устраивает. Надеюсь, это сработает и для кого-то другого.

class NumbersViewController: UIViewController, UITextFieldDelegate { 

var codeTextField: UITextField?; 
var numberTextField: UITextField?; 

override func viewDidLoad() { 
    super.viewDidLoad(); 
} 

override func viewDidAppear(animated: Bool) { 
    self.askForNumber(); 
} 



func askForNumber(prefix: String = ""){ 
    var title = ""; 
    var message = "Enter your mobile number\n\n\n"; 
    var alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert); 
    alert.modalInPopover = true; 

    func handleOk(alertView: UIAlertAction!){ 

     var code: String = self.codeTextField!.text; 
     var number: String = self.numberTextField!.text; 

    } 

    var inputFrame = CGRectMake(0, 70, 270, 25); 
    var inputView: UIView = UIView(frame: inputFrame); 

    var prefixFrame = CGRectMake(7, 5, 10, 10); 
    var prefixLabel: UILabel = UILabel(frame: prefixFrame); 
    prefixLabel.text = "+"; 

    var codeFrame = CGRectMake(20, 0, 65, 25); 
    var countryCodeTextField: UITextField = UITextField(frame: codeFrame); 
    countryCodeTextField.placeholder = "Code"; 
    countryCodeTextField.borderStyle = UITextBorderStyle.RoundedRect; 
    countryCodeTextField.keyboardType = UIKeyboardType.DecimalPad; 

    var numberFrame = CGRectMake(90, 0, 170, 25); 
    var myNumberTextField: UITextField = UITextField(frame: numberFrame); 
    myNumberTextField.placeholder = "Number - digits only"; 
    myNumberTextField.borderStyle = UITextBorderStyle.RoundedRect; 
    myNumberTextField.keyboardType = UIKeyboardType.DecimalPad; 

    self.codeTextField = countryCodeTextField; 
    self.numberTextField = myNumberTextField; 

    inputView.addSubview(prefixLabel); 
    inputView.addSubview(self.codeTextField!); 
    inputView.addSubview(self.numberTextField!); 

    alert.view.addSubview(inputView); 


    alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler:handleOk)); 

    self.presentViewController(alert, animated: true, completion: nil); 

} } 
+0

Мне нужна объективная версия c :( – theFool

+0

Он должен выглядеть как почти то же самое ... Должны быть некоторые изменения инициализирующих переменных и могут быть одной или двумя вещами, но Obj-C для меня «Read Only». Я ничего не могу написать, используя его. :) –

+1

Hm .. Почему бы вам не поместить мой код в класс и не использовать его в своем проекте как быстрый класс: http://pinkstone.co.uk/how-to-use-swift-classes-in-objective-c/ Эта ссылка объясняет процесс, но вы можете сделать еще несколько исследований, как это сделать, если хотите. :) –

0

Я думаю, что Apple, отбить этот подход, но в любом случае AlertView есть метод addSubview, так что вы можете создавать текстовые поля и добавить их к AlertView. Не забывайте, чтобы TextField стал первым ответчиком.

Но опять же, Apple препятствует такому подходу.

+0

Какой подход они препятствуют? –

+0

Запрос пользователя на номер, используя UIAlertControler, используя UItextField или комбинацию между ними? –

+0

Использование AlertView с TextFields, но я нашел это tooday, возможно, вы можете использовать его. https://github.com/nmaletm/STAlertView –