В Swift 3 вы можете сделать следующее
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
Ваши обработчики событий образуют замыкание, которое запоминает «живой» указатель на переменные в охватывающей области. Таким образом, когда они фактически выполняются, они имеют последнее значение imgSource
и imgTitle
.
Вместо этого вы можете использовать этот шаблон для локализации значений переменных. Это будет создавать копии источника и заголовка внутри getClickHandler при каждом его вызове. Таким образом, возвращенная функция запоминает значения в этой итерации цикла.
//Check those anchors with rel=litebox
for(i = 0;i < elem.length;i++){
if(elem[i].rel == "litebox"){
imgSource = elem[i].href.toString();
imgTitle = elem[i].title;
elem[i].childNodes[0].style.border="0px solid #fff";
elem[i].onclick = getClickHandler(imgSource, imgTitle);
}
}
//Brings up the image with focus
function getClickHandler(source,title){
return function() {
document.getElementById("liteBox").style.display = "block";
document.getElementById("liteBox").innerHTML = "<h1>" + title + "</h1>" +
"<img src='" + source + "'/><br />" +
"<a href='#' onclick='liteBoxClose();'><img src='images/litebox_close.gif' border='0' alt='close'/></a>";
document.getElementById("liteBoxBg").style.display = "block";
}
}