2015-02-09 5 views
0

У меня есть UITextView который содержит текст и изображения. У меня также есть массив CGPoint, содержащий координаты изображений, добавленных пользователем в UITextFied. Всякий раз, когда тексты в UITextView меняются (добавление или удаление), я получаю позицию курсора, которая является объектом CGPoint.Как сравнить два момента в Swift

Теперь я хочу пропустить мой массив CGPoint, чтобы узнать, сколько изображений падает после позиции курсора на одной строке или строках ниже. Как мне это сделать?

Любая помощь будет очень оценена.

Sure:

var cursor = message.caretRectForPosition(message.selectedTextRange?.end).origin;  
for i in 0...emoji1.count-1 { 
     if ((cursor.x > emoji_pt[i].x) && (cursor.y <= emoji_pt[i].y)) { 
      continue; 
     } 
     else { 
      //the emoji is after the cursor. 
      // Return the index and process all images after that index 
     } 
    } 
+0

Можете ли вы опубликовать ваши попытки и описать, почему они не работают? –

ответ

1

Для обработки позиции Y

Bool onPreviousLine = (emoji_pt[i].y < cursor.y) 

Чтобы справиться с позиции X (lineHeight будучи постоянным в зависимости от вашего случая и размера изображений, вы, вероятно, уйти с некоторым низким постоянным значением (например, 1.0)).

Bool onTheSameLine = abs(Double(emoji_pt[i].y - cursor.y)) < Double(lineHeight/2) 
Bool beforeX = (emoji_pt[i].x < cursor.x) 

Вместе

if onPreviousLine || (onTheSameLine && beforeX) { 
    continue 
} 
+0

Я пробовал это, но я понял, что, когда есть около 3 строк текста и изображений, а курсор находится на последней строке, он перемещает все изображения, «вертикально позади» точки х. –

+0

@MichaelWoyo Отредактировав ответ, забыли случай. – Sulthan

+0

Я вернусь к вам по результатам, которые я получу. Спасибо всем тем же. –