2015-09-04 4 views
7

Я хочу создать простой вид над клавиатурой, когда пользователи нажимают кнопку «Прикрепить» в inputAccessoryView. Что-то вроде этого:Как показать UIView над клавиатурой в iOS

enter image description here

Есть простой способ сделать это? Или я должен создать свою собственную клавиатуру?

ответ

9

Вы можете добавить этот новый вид в окно приложения.

func attach(sender : UIButton) 
{ 
    // Calculate and replace the frame according to your keyboard frame 
    var customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height-300, width: self.view.frame.size.width, height: 300)) 
    customView.backgroundColor = UIColor.redColor() 
    customView.layer.zPosition = CGFloat(MAXFLOAT) 
    var windowCount = UIApplication.sharedApplication().windows.count 
    UIApplication.sharedApplication().windows[windowCount-1].addSubview(customView); 
} 
+0

Да, это именно то, что мне нужно, спасибо большое! –

+0

@pavel_s: Добро пожаловать. Счастливое кодирование !!! –

+0

Вы можете использовать 'sender.window' вместо' UIApplication.sharedApplication(). Windows [...] '? – rintaro

2

У вас есть эффективный метод решения этой проблемы? В iOS9 вы помещаете свой customView в верхнюю часть окон : UIApplication.sharedApplication(). Windows [windowCount-1] .addSubview (customView); Но если клавиатура будет упущена, верхняя Windows будет удалена, поэтому ваш пользовательский вид будет удален. Ждем вас к помощи! Спасибо за помощь!

+0

Пожалуйста, см. Мой ответ, я решаю эту проблему следующим образом: http://stackoverflow.com/questions/32598490/show-uiview-with-buttons-over-keyboard-like-in-skype-viber-messengers-swift-i –

0

Хотя это возможно при доступе к самому верхнему окну, я бы избегал, так как это явно мешает руководящим принципам Apple.

Что я хотел бы сделать, это отпустить клавиатуру и заменить ее рамку видом того же размера.

Квоту клавиатуры можно получить с уведомлений с клавиатуры, перечисленных here, их userInfo содержат ключ, к которому можно обратиться с помощью UIKeyboardFrameEndUserInfoKey.

1

Swift 4,0

let customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height-300, width: self.view.frame.size.width, height: 300)) 
customView.backgroundColor = UIColor.red 
customView.layer.zPosition = CGFloat(MAXFLOAT) 
let windowCount = UIApplication.shared.windows.count 
UIApplication.shared.windows[windowCount-1].addSubview(customView) 
0

Swift 4 версия:

let customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height - 300, width: self.view.frame.size.width, height: 300)) 
customView.backgroundColor = UIColor.red 
customView.layer.zPosition = CGFloat(Float.greatestFiniteMagnitude) 
UIApplication.shared.windows.last?.addSubview(customView) 

Хитрость заключается в том, чтобы добавить customView в качестве верхней подвид к UIWindow, который содержит клавиатуру - и это происходит будет последним окном в UIApplication.shared.windows.

0

Вы можете обязательно добавить представление в окно приложения, и вы также можете добавить еще одно окно целиком. Вы можете установить его кадр и уровень. Уровень может быть UIWindowLevelAlert.

Смежные вопросы